如何说出除破折号(“-”)之外的任何字符

Liq*_*ake 5 regex

我们如何编写一个正则表达式来表示“如果中间有破折号,则匹配失败”

我有几行组成为 3958.3r - 5v,有些没有破折号,例如:3958.3v4r。我能够得到带有破折号的那些,但不仅限于那些没有破折号的

Eva*_*van 7

这可以通过字符类否定来完成。^在字符类的开头只是简单地否定该字符类。如果您只有该字符-,那么您将创建一个匹配除 之外的任何字符的字符类-

^[^\-]+$
Run Code Online (Sandbox Code Playgroud)

根据你所说的,你需要将 ^ (字符串的开头)放在模式的前面,并转义,.否则你不仅会匹配.后面的字符395[0-9],还会匹配任何字符,例如3950z

^395[0-9]\.[^-]+$
Run Code Online (Sandbox Code Playgroud)