RegEx for Javascript允许除“和%之外的所有内容

时间:2014-01-09 01:37:21

标签: javascript regex

在正则表达式中:

var r = new RegExp('^[^%"]*$');

^$表示什么?这是否意味着字符串的开头和结尾或其他内容。

如果我删除^$之类的内容,那该怎么办?

var r = new RegExp('[^%"]*');

这是一个有效的正则表达式吗?

3 个答案:

答案 0 :(得分:2)

  

^和$表示什么?这是否意味着字符串的开头和结尾   别的什么。

[]字符类之外,^匹配行的开头,$匹配行的结尾。在[]字符类中,^(在类的开头使用时)表示计算不在字符类中的任何字符。

  

另外如果我删除^和$之类的东西:var r = new   RegExp('[^%“] *');?这是一个有效的正则表达式吗?

是的,这是有效的,只是因为在否定匹配的任一侧可能有字符,并且*匹配定义的字符类的0或更多字符,所以它不会有多大成就。

使用类似regex101.com to test your expressions and play around的内容。

答案 1 :(得分:0)

是'^'和'$'分别表示字符串的结尾。至少在一个角色类之外。在一个字符类^意味着没有,所以它将不匹配那些否定的字符(在这种情况下%和单引号) 如果您删除了^$,那么正则字符串可能会通过,即使字符串中包含%或“,其他字符

实施例

"\"50\"%".match(/^[^"%]*$/); // equals null
"\"50\"%".match(/[^"%]*/); //equals [""]
"\"50\"%".match(/[^"%]*/g); //equals ["", "50", "", "", ""]

同样在JS中,最佳做法是使用/ some regex / gm而不是新的Regex(“Some regex”)来创建正则表达式

答案 2 :(得分:0)

可以使用^标记值更改$m的含义。

  • 如果设置了m标记,^$将分别匹配的开头和结尾。
  • 如果未设置m标记,^$将分别匹配整个字符串的开头和结尾。

由于图像优于1000个单词,因此这里是正则表达式:

^[^%"]*$

Regular expression visualization

[^%"]*

Regular expression visualization