我有一条消息(m)说“修复#1〜需要验证”。
我想识别附加'#'的所有数字。所以,我扫描文本:
issue = m.scan(/[^\#][0-9]+/)
但issue
为空,除非#后面的数字是两位数或> 9意思是如果消息是“修复#10~需要验证”,那么我的问题是10。
我在这里做错了什么?
答案 0 :(得分:3)
你正在否定字符类,所以你的正则表达式匹配(任何不是#的东西)后跟一个或多个数字。 2位数字符合这一要求,但以#为前缀的一位数字不符合。
这是你应该做的事情:
issue = m.scan(/#[0-9]+/)
或(信用this answer):
issue = m.scan(/#\d+/)
答案 1 :(得分:2)
"fixes #1 ~needs #12verification" .scan(/#\d+/) #=> ["#1", "#12"]
答案 2 :(得分:0)
从#符号中取出方括号:
issue = m.scan(/^#[0-9]+/)