在令人震惊的认识到JavaScript中的正则表达式与PCE中的正则表达式有些不同之后,我坚持以下内容。
在I extract a number 之后 x:
(?x)[0-9]+
在JavaScript中,由于捕获括号差异导致无效组,因此相同的正则表达式不起作用。
所以我试图实现相同的琐碎功能,but I keep getting x和数字:
(?:x)([0-9]+)
如何在不包含x?
的情况下捕获> x之后的数字答案 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"]