正则表达式-匹配从特定字符到所有非数字的所有数字

时间:2018-10-17 14:58:23

标签: javascript regex

我想从下面的文本中获取4654052。数字从--?开始。 ?  可以是任何非数字字符。

here-is-some-string--4654052?day=2018-10-17

我有tried \D.*|\D+,但它希望文本以数字开头。

3 个答案:

答案 0 :(得分:2)

如果您希望文本以数字开头,则可以使用捕获组。试试这个表达式:

--(\d+)\D

\d+代表“一个或多个”数字,而\D代表非数字。

答案 1 :(得分:1)

您可以在sed中使用类似的内容:

 $ echo "here-is-some-string--4654052?day=2018-10-17" | sed "s/^.*--\([0-9][0-9]*\)?.*/\1/g"

 Output:  4654052

它的工作原理是在--之后和?符号之前为具有1个或多个数字的数字创建后向引用。

答案 2 :(得分:1)

在JavaScript中,您可以使用以下正则表达式:

/[-]{2}([0-9]+)/

通过匹配2个hyphen字符,然后匹配任何一组number的字符一次或更多次来起作用。它将创建一个具有匹配项的array,可以通过索引访问捕获的组。

要访问网上论坛(包含所需的号码),您可以执行以下操作:

var text = 'here-is-some-string--4654052?day=2018-10-17';
var matches= text.match(/[-]{2}([0-9]+)/);
if (matches && matches.length > 1)
{
    var number = matches[1];
}