例如,如果我有这样的文字:
"hello800 more text 1234 and 567"
它应匹配1234
和567
,而不是800
(因为它跟随hello
的{{1}},而不是数字。
它类似于编程语言,例如,在JavaScript中,o
是一个变量,而abc123
单独,不跟随文本,被视为数字。
请注意,我只想否定集50
中的字符,而不是其他字符。例如,[A-Za-z]
和+33
仍应返回-33
。
我的第一次试验是匹配NOT集:
33
这根本不起作用。
我的第二次尝试是扭转字符串并使用否定前瞻:
[^A-Za-z]([0-9]+)
仅当有1位数时才有效。 /([0-9]+)(?![A-Za-z])/g
与1a
不匹配(这很好),但1
与123a
匹配(这很糟糕)。
答案 0 :(得分:2)
答案 1 :(得分:1)
答案 2 :(得分:1)
var str = "hello800 more text 1234 and 567 blah blah +33 end";
var result = str.match(/\b\d+\b/g);
console.log(result);

<强>解释强>
\b : word boundary, make sure we don't have letter or digit before
\d+ : 1 or more digits
\b : word boundary, make sure we don't have letter or digit after