JavaScript正则表达式在字符串后获取数字
JavaScript regex get number after string
在令人震惊地意识到JavaScript中的正则表达式与PCE中的正则表达式有些不同之后,我陷入了以下困境。
在 php 中,我在 x 之后提取一个数字:
(?x)[0-9]+
在 JavaScript 中,由于捕获括号差异导致的组无效,相同的正则表达式不起作用。
所以我正在尝试实现相同的微不足道的功能,但我不断得到 x 和数字:
(?:x)([0-9]+)
如何在不包含 x 的情况下捕获 x 之后的数字?
这也有效:
/(?:x)([0-9]+)/.test('YOUR_STRING');
然后,所需的值为:
RegExp.$1 // group 1
您可以尝试以下正则表达式: (?!x)[0-9]+
在这里摆弄:https://jsfiddle.net/xy6x938e/1/
这是假设您现在正在寻找一个 x 后跟一个数字,它使用捕获组来捕获数字部分。
var myString = "x12345";
var myRegexp = /x([0-9]+)/g;
var match = myRegexp.exec(myString);
var myString2 = "z12345";
var match2 = myRegexp.exec(myString2);
if(match != null && match.length > 1){
alert('match1:' + match[1]);
}
else{
alert('no match 1');
}
if(match2 != null && match2.length > 1){
alert('match2:' + match2[1]);
}
else{
alert('no match 2');
}
(''d+) 试试这个!我已经使用 x12345 在此工具上进行了测试http://www.regular-expressions.info/javascriptexample.html
如何在不包含 x 的情况下捕获 x 之后的数字?
实际上,您只想在固定字符串/已知模式之后提取数字序列。
您的 PCRE (PHP) 正则表达式,(?x)[0-9]+
是错误的(?x)
,因为它是PCRE_EXTENDED
VERBOSE/COMMENTS 标志的内联版本(请参阅"模式修饰符")。在这种情况下,它不会做任何有意义的事情,(?x)[0-9]+
等于 [0-9]+
或 'd+
.
您可以使用
console.log("x15 x25".match(/(?<=x)'d+/g));
您还可以使用捕获组,然后在获得匹配项后提取组 1 值:
const match = /x('d+)/.exec("x15");
if (match) {
console.log(match[1]); // Getting the first match
}
// All matches
const matches = Array.from("x15,x25".matchAll(/x('d+)/g), x=>x[1]);
console.log(matches);
您仍然可以使用独占模式(?!...)
因此,对于您的示例,它将是 /(?!x)[0-9]+/
.尝试以下操作:
/(?!x)'d+/.exec('x123')
// => ["123"]
- javascript从id获取数字
- 通过正则表达式获取数字
- 如何使用jquery获取数字元素的文本并放入数组中
- 浏览器在尝试获取数字的最大素因数(Javascript)时崩溃
- parseInt 不起作用,从字符串中获取数字
- 当浮点部分为空时,从 JQuery 中的输入元素获取数字值不起作用
- 从名称中获取数字
- 使用 Javascript 从 html 下拉菜单中获取数字形式的值
- 从表单、计算和使用 javascript 更新 html 内容中获取数字值
- 仅从 URL 中获取数字
- JavaScript正则表达式在字符串后获取数字
- 如何根据数字的值获取数字的名称
- 使用 javascript 获取数字
- 只需要从字符串中获取数字值
- 从提示和循环中获取数字
- 从JS代码中获取数字并从中构造一个数组
- 如何在Javascript中从字符串中获取数字
- 如何从HTML表单中获取数字并将其传递给JavaScript
- 如何从哈希中获取数字
- 如何在Javascript中只获取数字