Regex未按预期执行

Regex not performing as expected

本文关键字:执行 Regex      更新时间:2023-09-26

我有一段代码,我认为应该检测提供的字符串是否只由任意数量的空格组成,后跟逗号,后跟任意数量的空间:

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

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

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

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

有什么想法吗?

您不应该引用RegExes。您正试图以这种方式匹配实际的、字面意义上的RegEx文本。尝试:

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

匹配任何空白字符或

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

仅匹配空格。

在javascript中,regex不需要加引号。。。

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

应该是,您将字符串传递给match而不是regex,还将's用于space而不是[ ]

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

在Javascript/jQuery中,您不能在正则表达式周围加引号——删除它们,您的第一次尝试应该会很好(它在RegExr链接中这样做:http://regexr.com?35v18)

因此,您需要的是str.match(/^[ ]*,[ ]*$/)

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

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

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