我有一个输入场景,输入模式如下:
var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+\s*([^,]?[a-z]+)*$/i;
我的输入属于以下允许的类型:
- 加利福尼亚州洛杉矶
- 加利福尼亚州洛杉矶(字符串文本之间有空格)
- 美国加利福尼亚州洛杉矶
- 美国加利福尼亚州洛杉矶(字符串文本之间有空格)
- 美国加利福尼亚州洛杉矶(字符串文本之间有空格,可能在结束文本之后有空格)
以下输入类型(带有额外 的输入类型未通过测试:
- 美国加利福尼亚州洛杉矶
- 美国加利福尼亚州洛杉矶(字符串文本之间有空格)
- 美国加利福尼亚州洛杉矶(字符串文本之间有空格,可能在结束文本之后有空格)
谁能告诉我我在这里做错了什么?任何帮助,将不胜感激!谢谢!
是的,我是正则表达式和 js 的新手。
用于测试的完整代码:
if (str.match(locationstring)){
console.log("Match pattern str!");
type = 2;
}else{
alert("No match str!");
return;
}
最佳答案
var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+\s*([^,]?[a-z]+)*$/i;
^^^^
在这里,您明确禁止任何逗号(带有 negated character class )。每个包含多个逗号的字符串均不符合该规则。
看来您实际上希望在该位置允许逗号后跟可选空格:
var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+(,\s*[a-z]+)*$/i;
关于javascript - javascript 中的正则表达式正则表达式模式用于带逗号的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19964435/