正则表达帮助

时间:2011-07-12 14:24:56

标签: regex

我拥有的内容:/^[26]{1}[0-9]{7}$/

我想要实现的目标:

25566778 # match
62299311 # match
12345678 # no match
76752313 # no match

基本上,最大长度为8,第一个字符只能是2或6,仅数字。

这个表达有什么问题?

6 个答案:

答案 0 :(得分:4)

一些观察结果:

  • 假设{1}是不必要的。
  • 您可能会在\b而不是^$上获得更多好运,因为这两个匹配字符串的结尾,而\b与{{3}匹配}}。
    • 如果有疑虑,请解释您对过去目标的要求

答案 1 :(得分:3)

我觉得你的表情没问题:

http://regexr.com?2u74v

答案 2 :(得分:2)

这是对的。简化:^[26][0-9]{7}$

答案 3 :(得分:2)

我这样做^[26]\d{0,7}$。 BTW,一个帮我设计正则表达式的工具是Expresso

答案 4 :(得分:2)

我会做一些事情

  • 指定您使用正则表达式的上下文 - 这是 重要。不同的环境可以有不同的语法,和 虽然在这种情况下不是那么多,不同的能力。 (+ | - )
    例如,Lookbheinds或lookaheads。
  • 除非必要,否则删除/
  • 在[26]之后删除{1},隐含1。
  • 确保该行在最后一位数后结束。否则,匹配将失败并指定$。没有       空格,没有评论等。

所有这一切都说使用grep这有效:

grep -P '^[26][0-9]{7}$' temp

(注意,-E也会起作用)

使用以下输出:

  

25566778
62299311

在回答我的问题时,

编辑其他6个答案。我期待什么我希望这有帮助

答案 5 :(得分:-5)

尝试使用正则表达式:

/^[26]{2}\d{7}$/