0

我有这段代码,我认为应该检测提供的字符串是否仅包含任意数量的空格,后跟逗号,后跟任意数量的空格:

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

并且下面的字符串不匹配“,”。事实上,在仅由空格和单个逗号组成的字符串中,逗号前后的空格数不会匹配。我想我可能对我的语法感到困惑,它只是没有点击。

我也尝试过用这些替换正则表达式,但没有成功:

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

有任何想法吗?

4

5 回答 5

3

你不应该引用正则表达式。您正在尝试以这种方式匹配实际的文字 RegEx 文本。尝试:

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

匹配任何空白字符,或

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

仅匹配空格。

于 2013-08-14T17:01:00.833 回答
1

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

if(str.match(/^[ ]*,[ ]*$/)) {
 //do something
}
于 2013-08-14T17:01:49.083 回答
0

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

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

(这将从开头和结尾删除所有空格,而不仅仅是空格)

于 2013-08-14T17:06:18.093 回答
0

应该是,您将字符串传递给match而不是正则表达式,也使用\sforspace而不是[ ]

if(str.match(/^[ ]*,[ ]*$/)) {
  //do something
}
于 2013-08-14T17:01:09.727 回答
0

你不能在 Javascript/jQuery 中为你的正则表达式加上引号——删除它们,你的第一次尝试应该可以正常工作(它在这个 RegExr 链接上可以:http ://regexr.com?35v18 )

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

于 2013-08-14T17:02:33.170 回答