2013-12-18 38 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