2014-01-09 25 views
0

在正则表达式:正则表达式为Javascript允许的一切,但“并%

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

什么呢^$表示是否意味着开始和字符串或其他东西的结束

也。如果我删除^$类似:

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

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

+0

你并不真的需要键入'新RegExp'。 'var r =/^ [^%“] * $ /;'很好;) –

回答

2

^和$表示什么?这是否意味着字符串的开始和结束,或者是其他的东西。

[]字符类之外,^的线的开始一致,所述$行的末尾匹配。在[]字符类里面,^(当在课程开始时使用)表示在里面的任何字符都不包含在字符类中。

而且如果我删除^和$类似:??变种R =新 的RegExp( '[^%“] *');这是一个有效的正则表达式

是,这是有效的,只是它不会取得多大,因为有可能是在否定匹配的两侧字符,*比赛0以上的定义字符类。

使用类似regex101.com to test your expressions and play around

0

是'^'和'$'分别表示字符串的结尾。至少在角色类别之外。在字符类别^意味着不是,所以它不会匹配那些否定的字符(在这种情况下为%和单引号) 如果您删除了^$,那么即使字符串中有%或“”,也可能会传递正则表达式,与其他人物

例子

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

此外,在JS是用来创建您正则表达式的最佳做法/一些正则表达式/克,而不是新的正则表达式(“有些正则表达式”)

+2

为什么最好使用* /一些正则表达式/ gm *? – Stephan

+0

我不同意'gm'标志部分。 'g'仅用于需要匹配所有匹配项时使用,'m'将换行符作为新字符串的指示符。 –

+0

它不必以gm结尾,这些只是正则表达式引擎的标志(g意思是全局的,m表示多行,我的意思是不区分大小写)我只是用它们来展示如何传递标志,当你用'new RegExp'创建一个正则表达式时,你将不得不担心转义,所以如果你匹配正则表达式中有“和”的内容,你不得不逃脱一个。这和使用/正则表达式/看起来更好。我可能忘记了更多 – raser

0

的意义^$可以更改与m标志值。

  • 如果m标志被设置,^$将分别匹配的开始和一个线的末尾。
  • 如果没有设置m标志,则^$将分别匹配的整个字符串的开头和结尾。

由于图像是超过1000个字好,这里是正则表达式视觉:

^[^%"]*$ 

Regular expression visualization

[^%"]* 

Regular expression visualization