正则表达式中的^是什么意思?

时间:2011-12-15 12:52:11

标签: regex

我很困惑,因为我认为正则表达式中的^否定了序列,但是这个:

^[0-9a-zA-Z ]+$

反之亦然。除了数字,字母和空格之外别无其他。我不明白。

3 个答案:

答案 0 :(得分:7)

^只有在[] 内时才会反转字符选项。在这里,它匹配字符串的开头,而$匹配结尾。

因此,此正则表达式匹配任何包含给定字符的 的字符串(而不是仅包含它们"某处")。

这可能会也可能不会产生影响,具体取决于您是否匹配"正则表达式或"搜索"为了它。 ("匹配"可以看作正则表达式的隐式^$锚定。)

答案 1 :(得分:2)

它不会否定一个序列,它会否定一个字符类,如果它是这样一个类中的第一个字符,例如[^0-9a-zA-Z ]将是一个否定的字符类,它匹配任何字符,但是匹配类中的字符。

如果^在字符类之外,则它是字符串开头的锚点,$是字符串结尾的锚点(或者行的开头/结尾)多行选项)

请参阅regular-expression.info for more information about anchors

答案 2 :(得分:1)

^表示“字符串以模式开头”,$表示“字符串以模式结束”。

因此,这种模式允许任何字符串由数字,字母和空格组成,其长度至少为1(因为+)。