Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Javascript的RegExp,它允许除“;及%_Javascript_Regex - Fatal编程技术网

用于Javascript的RegExp,它允许除“;及%

用于Javascript的RegExp,它允许除“;及%,javascript,regex,Javascript,Regex,在正则表达式中: var r=newregexp(“^[^%”]*$”); ^和$表示什么?它是指字符串的开始和结束还是其他什么 另外,如果我删除^和$之类的内容会怎么样 var r = new RegExp('[^%"]*'); 这是一个有效的正则表达式吗 ^和$表示什么?是字符串的开始和结束还是 还有别的 在[]字符类外部,^匹配行的开头,$匹配行的结尾。在[]字符类内部,^(在类的开头使用)表示匹配字符类之外的任何字符 另外,如果我删除^1和$2,比如:var r=new,会怎么样 Re

在正则表达式中:

var r=newregexp(“^[^%”]*$”);

^
$
表示什么?它是指字符串的开始和结束还是其他什么

另外,如果我删除
^
$
之类的内容会怎么样

var r = new RegExp('[^%"]*');
这是一个有效的正则表达式吗

^和$表示什么?是字符串的开始和结束还是 还有别的

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

另外,如果我删除^1和$2,比如:var r=new,会怎么样 RegExp(“[^%”]*')?这是一个有效的正则表达式吗

是的,这是有效的,只是它不会有太大的作用,因为否定匹配的两边都可能有字符,
*
匹配0个或更多已定义的字符类


使用类似于。

yes'^'和'$'这两个词分别表示字符串的结尾。至少在字符类之外。在字符类中,^表示不匹配,因此它将不匹配那些被否定的字符(%在本例中为单引号) 如果删除
^
$
,则正则表达式可能会通过,即使字符串中包含%或“以及其他字符

例子

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

同样在JS中,最好使用/some regex/gm而不是新的regex(“some regex”)来创建正则表达式。可以使用
m
标志值更改
^
$
的含义

  • 如果设置了
    m
    标志,
    ^
    $
    将分别匹配行的开头和结尾
  • 如果未设置
    m
    标志,
    ^
    $
    将分别匹配整个字符串的开头和结尾
由于图像优于1000个单词,以下是视觉上的正则表达式:

^[^%"]*$


为什么使用/some regex/gm是最佳实践?我不同意
gm
标志部分。
g
仅在需要匹配所有匹配项时使用,并且
m
将换行符视为新字符串的指示器。它不必以gm结尾,这些只是regex引擎的标志(g表示全局,m表示多行,我表示不区分大小写)我只是用它们来演示如何传递标志。当您使用
new regexp
创建一个打开的regexp时,您将不得不担心转义。因此,如果您匹配的regex在它里面,你必须避开一个。这和使用/regex/看起来更好。我可能忘记了更多。你真的不需要键入
newregexp
var r=/^[^%”]*$/;
就可以了;)
[^%"]*