我正在尝试在Ruby中编写一个正则表达式来搜索字符串中只有四位数的数字。我正在使用
/\d{4}/
但是这给了我四位数的数字。
例如:“12345-456-6575 some text 9897
”
在这种情况下,我只想要9897
和6575
,但我也得到1234
,其长度为五个字符。
答案 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/
,希望有帮助。