如何编写正则表达式才能找到只有四位数的数字?

时间:2011-08-09 15:01:56

标签: ruby regex

我正在尝试在Ruby中编写一个正则表达式来搜索字符串中只有四位数的数字。我正在使用
/\d{4}/但是这给了我四位数的数字。

例如:“12345-456-6575 some text 9897

在这种情况下,我只想要98976575,但我也得到1234,其长度为五个字符。

6 个答案:

答案 0 :(得分:16)

"12345-456-6575 some text 9897".scan(/\b\d{4}\b/)
=> ["6575", "9897"]

答案 1 :(得分:3)

尝试匹配四位数字序列两侧的单词边界(\b):

s = '12345-456-6575 some text 9897'
s.scan(/\b\d{4}\b/) # => ["6575", "9897"]

答案 2 :(得分:1)

您必须在表达式中再添加一个条件:只有4位数字才能返回该数字,并且该4位数字前后的字符必须都是非数字。

答案 3 :(得分:0)

或更一般地说:除了四位数字之前和/或之后的数字之外的任何东西:

/\D\d{4}\D/

答案 4 :(得分:0)

尝试/ [0-9] [0-9] [0-9] [0-9] [^ 0-9] /

答案 5 :(得分:-1)

您应该为模式指定分隔符。如果数字前面和后面跟着一个空格,REGEX会/\s\d{4}\s/,希望有帮助。