繁体   English   中英

JavaScript中的正则表达式正则表达式模式,用于使用逗号输入

[英]Regular Expression regex pattern in javascript for inputs with commas

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

var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+\s*([^,]?[a-z]+)*$/i;

我的输入是以下允许的类型:

  • 加利福尼亚洛杉矶
  • 加利福尼亚,洛杉矶(字符串文本之间具有空格)
  • 美国加利福尼亚州洛杉矶
  • 美国加利福尼亚州洛杉矶(字符串文本之间具有空格)
  • 美国加利福尼亚州洛杉矶(字符串文本之间和结尾文本之后可能有空格)

以下输入类型(带有extra的输入类型未通过测试:

  • 美国加利福尼亚州洛杉矶
  • 美国加利福尼亚州洛杉矶(字符串文本之间具有空格)
  • 美国加利福尼亚州洛杉矶(字符串文本之间和结尾文本之后可能有空格)

谁能告诉我我在做什么错? 任何帮助,将不胜感激! 谢谢!

是的,我是regex和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;
                                              ^^^^

在这里,您明确禁止使用任何逗号( 字符类 )。 每个具有多个逗号的字符串都不符合该规则。

看来您实际上想在该位置允许逗号后跟可选的空格:

var location = /^[a-z]+\s*[a-z]*,\s*[a-z]+(,\s*[a-z]+)*$/i;

您的正则表达式只能在一个位置上匹配一个,正则表达式中逗号所在的位置。 所以很明显,它不会匹配包含多个;)的字符串。

此正则表达式将匹配您所有的测试用例(与您的测试用例相反,匹配名称中没有空格的城市-存在的城市,您知道吗?^^):

/^\\w+(\\s*\\w+)?\\s*,\\s*\\w+\\s*(,\\s*\\w+)?$/i?

(它仍然不匹配包含whistespace的争端或状态-如果可以,请告诉我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM