我很困惑,因为我认为正则表达式中的^否定了序列,但是这个:
^[0-9a-zA-Z ]+$
反之亦然。除了数字,字母和空格之外别无其他。我不明白。
答案 0 :(得分:7)
^
只有在[]
的 内时才会反转字符选项。在这里,它匹配字符串的开头,而$
匹配结尾。
因此,此正则表达式匹配任何包含给定字符的 的字符串(而不是仅包含它们"某处")。
这可能会也可能不会产生影响,具体取决于您是否匹配"正则表达式或"搜索"为了它。 ("匹配"可以看作正则表达式的隐式^
和$
锚定。)
答案 1 :(得分:2)
它不会否定一个序列,它会否定一个字符类,如果它是这样一个类中的第一个字符,例如[^0-9a-zA-Z ]
将是一个否定的字符类,它匹配任何字符,但是匹配类中的字符。
如果^
在字符类之外,则它是字符串开头的锚点,$
是字符串结尾的锚点(或者行的开头/结尾)多行选项)
请参阅regular-expression.info for more information about anchors。
答案 2 :(得分:1)
^表示“字符串以模式开头”,$表示“字符串以模式结束”。
因此,这种模式允许任何字符串由数字,字母和空格组成,其长度至少为1(因为+)。