在代字号旁边找到号码

时间:2017-10-12 05:42:10

标签: javascript regex

坚持让这个工作,因为标准的后视似乎并不支持它

所以我的字符串是:1~92 entries of 499 entries

我想提取92

我已尝试过/\d(?!~)/,但只有9,如果我使用global标志,它最终会给我499。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

在PHP中,负面的lookbehind可以使用(?<=~)(?:[0-9]+) 但在javascript中,这样做会更容易:

var str = "1~92 entries of 499 entries";
var afterTilde = str.substr(str.indexOf("~")+1,2);

或使用正则表达式: var regex = /(~)([0-9]{2})/g; 并捕获group 2

enter image description here

&#13;
&#13;
var regex = /(~)([0-9]{2})/;
var str = "1~92 entries of 499 entries";
alert(str.match(regex)[2])
&#13;
&#13;
&#13;

答案 1 :(得分:1)

我认为你不一定需要一个外观。根据您的示例,正​​则表达式[0-9]+\~([0-9]+)将正确捕获组1上的92

https://regex101.com/r/T4tSLD/1

上查看

答案 2 :(得分:0)

使用波形符~为您的优势,并在其后面捕获数字:

/\d~(\d*)/

工作示例:

&#13;
&#13;
var string = '1~92 entries of 499 entries';

let number = string.match(/\d~(\d*)/)[1];

console.log(number);
&#13;
&#13;
&#13;