Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript正则表达式获取字符串后的数字_Javascript_Regex - Fatal编程技术网

JavaScript正则表达式获取字符串后的数字

JavaScript正则表达式获取字符串后的数字,javascript,regex,Javascript,Regex,在震惊地意识到JavaScript中的正则表达式与PCE中的正则表达式有些不同之后,我坚持以下观点 在php中,在x之后: (?x)[0-9]+ 在JavaScript中,由于捕获括号的差异导致无效组,因此相同的正则表达式不起作用 因此,我试图实现相同的琐碎功能,包括x和数字: (?:x)([0-9]+) 如何在不包含x的情况下捕获x之后的数字?您可以尝试以下正则表达式:(?!x)[0-9]+ 在这里拉小提琴: 这是假设您现在正在查找后跟数字的x,它使用捕获组仅捕获数字部分 var mySt

在震惊地意识到JavaScript中的正则表达式与PCE中的正则表达式有些不同之后,我坚持以下观点

在php中,在x之后:

(?x)[0-9]+
在JavaScript中,由于捕获括号的差异导致无效组,因此相同的正则表达式不起作用

因此,我试图实现相同的琐碎功能,包括x和数字:

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

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

您可以尝试以下正则表达式:
(?!x)[0-9]+

在这里拉小提琴:

这是假设您现在正在查找后跟数字的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');
}
这也有效:

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

然后,您想要的值是:

RegExp.$1//group 1

(\d+)试试这个! 我已使用x12345在此工具上进行了测试

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

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

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

这应该有效(?x)([0-9]+)。@gothical是的,它有效!实际上这是错误的,它将匹配任何数字,忽略它的x、y或zyes是否符合我的期望:
var x=str.match(/(?:x)(\d+)/
匹配正确的部分,然后使用
x[1]访问它
。我确信一定有更优雅的方式?更优雅的方式?老兄,我觉得这很漂亮!:d显然,我写它的方式是在Javascript中使用正则表达式的一种非常常见的方式。我希望我不必访问数组,而只需访问一个变量。这种方式(我感谢你)要求我测试数组长度。当然有一种方法可以使用regex?ATM实现这一点,它返回
x15
,然后返回第二个捕获组
15
。这个regex的问题(如jimplode的帖子中所评论的)它匹配字符后面的任何数字,而不管键是
x
y
还是
z
。请参见: