正则表达式以'x'开头但不是'x98'的字符串

时间:2013-03-13 14:45:32

标签: regex

我正在尝试为字符串写一个正则表达式 -

  1. 以'x'开头。
  2. 'x'之后,它没有'98'
  3. 我写了以下正则表达式,但它无法正常工作

    ^x[0-8]|^x9[0-7]|^x99.*$
    

    有人可以指出它有什么问题吗?或者对于这种情况,什么可以是更好的正则表达式?

3 个答案:

答案 0 :(得分:3)

应该是:

^x(?!98).* //(?!pattern) is a negative lookahead

答案 1 :(得分:1)

您可以使用否定前瞻:

^x(?!98)\d{2}.*$

将匹配

的字符串
  • ^x - 以x
  • 开头
  • \d{2} - 后跟两位数字(我从你的正则表达式中猜到了这一点;你的描述没有提到这一点)
  • (?!98) - 98
  • .*$ - 并任意延伸,直到字符串
  • 结尾

(我不确定最后一项要求是什么;我可能会选择^x(?!98)\d{2}。)

答案 2 :(得分:1)

这可能适用于您的情况:

^x(?!98)