JavaScript regex在字符串后获取数字

时间:2016-02-24 16:23:11

标签: javascript regex

在令人震惊的认识到JavaScript中的正则表达式与PCE中的正则表达式有些不同之后,我坚持以下内容。

I extract a number 之后 x:

(?x)[0-9]+

在JavaScript中,由于捕获括号差异导致无效组,因此相同的正则表达式不起作用。

所以我试图实现相同的琐碎功能,but I keep getting x和数字:

(?:x)([0-9]+)

如何在不包含x?

的情况下捕获 x之后的数字

5 个答案:

答案 0 :(得分:3)

这也有效:

int main() { cout << "Please give me a line of text to examine: "; auto line = ""s; getline(cin, line); // Push back every character to the vector vector<char> vtext; for (const auto &elem : line) vtext.push_back(elem); // Create a copy of the vector<char> and reverse the copy vector<char> vtext_reversed{vtext}; reverse(begin(vtext_reversed), end(vtext_reversed)); // Print the line reversed cout << "\nThis is the line reversed: "; for (const auto &elem : vtext_reversed) cout << elem; }

然后,您想要的值是:

/(?:x)([0-9]+)/.test('YOUR_STRING');

答案 1 :(得分:2)

您可以尝试以下正则表达式:(?!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');
}

答案 2 :(得分:1)

(\ d +)试试吧! 我用x12345测试了这个工具 http://www.regular-expressions.info/javascriptexample.html

答案 3 :(得分:0)

<块引用>

如何在不包含 x 的情况下捕获 x 之后的数字?

实际上,您只想在固定字符串/已知模式之后提取一个数字序列。

您的 PCRE (PHP) 正则表达式 (?x)[0-9]+ 错误,因为 (?x)PCRE_EXTENDED VERBOSE/COMMENTS 标志的内联版本(请参阅 {{ 3}})。在这种情况下它没有做任何有意义的事情,(?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);

答案 4 :(得分:-1)

您仍然可以使用独占模式(?!...)

因此,对于您的示例,它将是/(?!x)[0-9]+/。试试以下内容:

/(?!x)\d+/.exec('x123')
// => ["123"]