示例代码:
test = '12asiudas8787hajshd986q756tgs87ta7d6-12js01'
test.scan(regexp)
结果,我应该得到:
["8787", "986", "756", "87", "7", "6", "12"]
与使用/\d+/
正则表达式相似,但在字符串的开头和结尾没有数字,在本例中为12和01。
答案 0 :(得分:1)
要匹配 中的数字,请使用以下正则表达式。
正则表达式: (?<=[^\d])(\d+)(?=[^\d])
<强>解释强>
(?<=[^\d])
将确保其后面没有数字。如果没有此2
的{{1}}开头也会匹配,我们也不想这样做。
12
与您的号码相符。
(\d+)
将确保最后一位数字后面没有数字。如果没有此(?=[^\d])
0
,也会匹配。
P.S:在Wiktor Stribiżew's建议
上编辑正则表达式也可以使用01
代替\D
。我使用[^\d]
来说清楚。
的 Regex101 Demo 强>
的 Edited Regex101 Demo 强>
答案 1 :(得分:1)
test.scan(/(?<=\D)\d+(?=\D)/) # => ["8787", "986", "756", "87", "7", "6", "12"]
答案 2 :(得分:0)
这应该做:
test.scan(/(?<=[^\d])(\d+)(?=[^\d])/).flatten