我正在使用以下正则表达式检查字符串:/^[SE]*[\s]*[0-9]{3}[\s\-]*[0-9]{2 }$/
。这总共允许 9 种不同的格式,分别是:XXXXX、XXX-XX、XXX XX、SEXXXXX、SEXXX-XX、SEXXX XX、SE XXXXX、SE XXX-XX 和 SE XXX XX(X:s 是 0- 9).在检查 9 种有效格式之一后,如何将格式更改为 XXXXX?
我已经阅读了许多有关 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 格式。
最佳答案
你可以这样做:
var format = /^([SE]*)\s*(\d{3})[\s\-]*(\d\d)$/;
if (format.test(pcValue)) {
pcValue = pcValue.replace(format, "$2$3");
}
请注意,如果 test
返回 true 时除了替换之外不执行任何其他操作,那么您根本不必测试,只需执行替换即可。
关于javascript - 使用 javascript 更改字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20654661/