Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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,我试图编写一个正则表达式来提取由连字符分割的字符串右侧的数字 对于1-15我想返回15 对于0-8我想返回8 请记住,我不想在连字符和数字之间包含空格 我尝试了[^-\s]\d,但这不对。您可以使用: str = '1 - 15'; var num = str.replace(/^[^-]*-\s*(\d+).*$/, '$1'); //=> 15 正常情况下,它应该会起作用 最后使用美元 [^-\s]\d$ 您也可以使用 这一个将寻找: (?:\d+) //a group of on

我试图编写一个正则表达式来提取由连字符分割的字符串右侧的数字

对于
1-15
我想返回
15

对于
0-8
我想返回
8

请记住,我不想在连字符和数字之间包含空格

我尝试了
[^-\s]\d
,但这不对。

您可以使用:

str = '1 - 15';
var num = str.replace(/^[^-]*-\s*(\d+).*$/, '$1');
//=> 15

正常情况下,它应该会起作用

最后使用美元

[^-\s]\d$
您也可以使用

这一个将寻找:

(?:\d+) //a group of one or more numbers
\s      //a space
-       //a hyphen
\s      //a space
(\d+)   //a second group of one or more numbers. 

“?:告诉它扔掉第一个匹配项,因此它只返回第二个匹配项(在连字符之后)。

此模式也应该有效
(\d+)\d*$

您正在搜索的是“不是
-
或````,然后正好是1位的字符”,那么您为什么需要正则表达式,不管怎样,为什么不简单地使用
str.split?”(“-”[1]
?公平点。我尝试这样做是因为我试图了解更多有关正则表达式的信息。不过我可能会同意您建议的实现。输入的是
“1-15 foo”
,然后拆分将不起作用。谢谢。似乎没有明确的正确答案,但这是一个很好的解释/解决方案。
(?:\d+) //a group of one or more numbers
\s      //a space
-       //a hyphen
\s      //a space
(\d+)   //a second group of one or more numbers.