1

我有一条消息(m)说“修复#1〜需要验证”。

我想识别所有附加“#”的数字。所以,我扫描文本:

issue = m.scan(/[^\#][0-9]+/)

但是issue是空的,除非 # 之后的数字是两位数或 > 9,这意味着如果消息是“修复 #10 ~需要验证”,那么我的问题是 10。

我在这里做错了什么?

4

3 回答 3

3

您正在否定字符类,因此您的正则表达式匹配(任何不是#)后跟一个或多个数字。两位数字适合这个,但以# 为前缀的一位数字不适合。

这是你应该做的:

issue = m.scan(/#[0-9]+/)

或者(归功于这个答案):

issue = m.scan(/#\d+/)
于 2013-04-30T17:03:09.697 回答
2
"fixes #1 ~needs #12verification" .scan(/#\d+/) #=> ["#1", "#12"]
于 2013-04-30T17:04:04.823 回答
0

去掉#号的方括号:

issue = m.scan(/^#[0-9]+/)
于 2013-04-30T17:11:05.240 回答