谁能解释这两个正则表达式之间的区别?

时间:2014-06-07 13:54:49

标签: javascript regex

/^[a-zA-Z]+$/ 

vs

/[^a-zA-Z]+$/

3 个答案:

答案 0 :(得分:2)

表达式开头的^表示“在字符串开头处锚定”。

字符类 ^表达式中的[]表示negate

所以/^[a-zA-Z]$/匹配一个完全由(从头到尾)大写和小写字母字符组成的字符串,而/[^a-zA-Z]$/匹配“不包含字母字符的字符串结尾” “(例如,字符串末尾的数字)。

this is a string       -- matches neither 
                          (contains non alphabetic, but doesn't end in it)

this is a number: 123  -- second expression matches ': 123'
                          (string ends in non-alphabetic characters)

this                   -- first expression matches  'this' 
                          (string contains only alphabetic characters)

答案 1 :(得分:0)

在案例1中,^表示输入的开始。案例二否定了这个词。

案例1:从开始(^)到结束($)匹配a-zA-Z 0或更多(+)次

案例2:将没有(^)结束的所有内容($)与a-zA-Z 0-x(+)字符匹配

答案 2 :(得分:0)

/^[a-zA-Z]+$/

表示字符串应为
^:从中开始 [a-zA-Z]:小写或大写字母字符
+:至少有一个前一个,在这种情况下至少有一个alpha字符
$:应该以一个不完整的案例或小写字母字符结束

例如:
OnLyUpPeRaNdLoWeRcAsEaNdNoSpAcEs

/[^a-zA-Z]+$/

[^a-zA-Z]大写或小写字符
+:至少有一个,在这种情况下至少有一个字符但不是的大写或小写字母字符
$:应以none大写或小写字母字符结尾

例:
123456789个
anything12345< - 这是有效的,因为我们没有指定字符串应该如何开始,但我们知道它应该以非字母字符结尾