我在红宝石中有这个字符串,而我正试图与罪恶进行匹配
"please don't share this: 234-604-142"
"please don't share this: 234-604-1421"
到目前为止我已经
了\d{3}-\d{3}-\d{3}
但这也与第二种情况相符。为开始和结束添加^和$将导致它根本不起作用。
要解决此问题,我可以这样做:
x = "please don't share this: 234-604-1421"
x.split.last ~= /^\d{3}-\d{3}-\d{3}$/
但是有没有办法匹配罪呢?
答案 0 :(得分:3)
值得考虑的另一个选择是
(?<!\d)\d{3}-\d{3}-\d{3}(?!\d)
这样,如果出于任何原因,您的电话号码被跟随或以字母开头,如
"please don't share this number234-604-142because it's private"
正则表达式仍然有用。
解释正则表达式
(?<! # look behind to see if there is not:
\d # digits (0-9)
) # end of look-behind
\d{3} # digits (0-9) (3 times)
- # '-'
\d{3} # digits (0-9) (3 times)
- # '-'
\d{3} # digits (0-9) (3 times)
(?! # look ahead to see if there is not:
\d # digits (0-9)
) # end of look-ahead