正则表达式没有按预期执行

时间:2013-08-14 16:58:03

标签: javascript regex

如果提供的字符串只包含任意数量的空格,后面跟一个逗号,后跟任意数量的空格,我就会检测到认为应该检测的代码。

if(str.match("/^[ ]*,[ ]*$/")) {
  //do something
}

以下字符串与“,”不匹配。实际上,字符串中只包含空格和单个逗号的逗号之前或之后的空格数不会匹配。我想我可能会对我的语法感到困惑,它只是没有点击。

我也尝试用这些替换正则表达式而没有运气:

"/^[\s]*[,][\s]*$/"
"/^[\s]*,[\s]*$/"
"/^[ ]*[,][ ]*$/"

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

您不应该引用RegExes。您试图通过这种方式匹配实际的文字RegEx文本。尝试:

if (str.match(/^\s*,\s*$/))
{
  // whatever
}

匹配任何空白字符,或

if (str.match(/^ *, *$/))

仅匹配空格。

答案 1 :(得分:1)

在javascript中,正则表达式不需要引用...

if(str.match(/^[ ]*,[ ]*$/)) {
 //do something
}

答案 2 :(得分:0)

它应该是,您将字符串传递给match而不是正则表达式,也使用\s代替space

[ ]

答案 3 :(得分:0)

你不能在Javascript / jQuery中放置你的正则表达式的引号 - 删除它们并且你的第一次尝试应该正常工作(它在这个RegExr链接:http://regexr.com?35v18

所以,你需要的是str.match(/^[ ]*,[ ]*$/)

答案 4 :(得分:0)

已发布正确答案,但如果您使用的是jQuery,也可以使用

if ($.trim(str) === ",") {
  //do something
}

(将从开头和结尾剥离所有空格,而不仅仅是空格)