javascript - javascript 中的正则表达式正则表达式模式用于带逗号的输入

标签 javascript regex

我有一个输入场景,输入模式如下:

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/

相关文章:

javascript - 如何使用 datejs parseExact 解析任意日期

regex - 为什么 sed 的这个正则表达式在 Makefile 中中断?

.net - RegEx - 取文本字符后面的所有数字字符

javascript - 动态创建元素的持久性 css 规则更改

javascript - 在 DraftJS 中创建 "Karaoke"类型功能

javascript - 将 JSON 解析为 UTF-8

javascript - JQuery - select val() 仅返回下拉列表的第一个值

regex - vee 验证正则表达式不起作用

regex - 有没有办法使用正则表达式来匹配 ansible 中的主机?

python - 在需要非贪婪匹配的情况下匹配正则表达式