2013-12-18 62 views
1

我使用以下正則表達式檢查字符串:/^[SE]*[\s]*[0-9]{3}[\s\-]*[0-9]{2}$/。這允許總共9種不同的格式,即:XXXXX,XXX-XX,XXXXX,SEXXXXX,SEXXX-XX,SEXXXXX,SEXXXXX,SEXXX-XX和SEXXXXX(X:s是從0- 9)。在9種有效格式之一的檢查通過後,如何將格式更改爲XXXXX?使用javascript更改字符串

我讀過一堆關於string.replace()-方法的其他線程,但我似乎無法使其工作。這裏是我到目前爲止的代碼:

 var pcValue = postalCode.value; 
     var format = /^[SE]*[\s]*[0-9]{3}[\s\-]*[0-9]{2}$/; 

     if (format.test(pcValue) === true) { 
      pcValue = pcValue.replace(/\[SE]*[\s]*[\s\-]*$/, /^[0-9]{5}$/); 
     } 

什麼它給了我是/^[0-9]{5}$/代替XXXXX格式,我想一個字符串。

回答

1

你可以這樣做:

var format = /^([SE]*)\s*(\d{3})[\s\-]*(\d\d)$/; 
if (format.test(pcValue)) { 
    pcValue = pcValue.replace(format, "$2$3"); 
} 

請注意,如果你沒有做任何事情比更換否則,如果test返回true,那麼你就不必在所有測試,只執行了更換。

+0

它可以工作,但如果在開始時有SE,它在替換後仍然存在。我該如何刪除它? – Lemonmuncher

+0

@Lemonmuncher編輯刪除SE –

0
var pcValue = postalCode.value; 
var format = /^[SE]*[\s]*[0-9]{3}[\s\-]*[0-9]{2}$/; 

if (format.test(pcValue) === true) { 
    pcValue = pcValue.replace(/\[SE]*[\s]*[\s\-]*$/, /^[0-9]{5}$/); 
} 

str.replace(original,replicant); 
0

試試這個:

var pcValue = postalCode.value; 
pcValue = pcValue.replace(/^[SE]*[\s]*([0-9]{3})[\s\-]*([0-9]{2})$/, "$1$2"); 

演示 http://jsfiddle.net/uLJEm/

+0

工作就像一個魅力!甚至刪除了最終的SE。 – Lemonmuncher

+0

@Lemonmuncher不客氣!不要忘記標記爲已接受您選擇的答案。 ;) – Stephan

0

已標記爲接受的答案也證實了這些類型的輸入:

"ES 12345" 
"SSSSS 123 - 45" 
"SESE  123---45" 

的followi NG正則表達式可能更好地適應您的需求:

function parse(input) { 
    var re = /^(?:SE)?\s?(\d{3})(?:\s|-)?(\d\d)$/; 
    return re.test(input) && input.replace(re, '$1$2'); 
} 
var input1 = parse('SE 123 45'); // 12345 
var input2 = parse('ES 123 45'); // false 
input1 || alert('Please fix input #1!'); 
input2 || alert('Please fix input #2!'); // alert! 

一點幫助約/^(?:SE)?\s?(\d{3})(?:\s|-)?(\d\d)$/

^...$  string boundaries 
(...)  capture match 
(?:...)  don't capture match 

(?:SE)?  "SE", zero or one time 
\s?   a whitespace, zero or one time 
(\d{3})  3 digits (captured -> $1) 
(?:\s|-)? a whitespace or a dash, zero or one time 
(\d\d)  2 digits (captured -> $2) 

更多關於正則表達式:http://www.javascriptkit.com/javatutors/redev.shtml