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
Regex 逗号分隔正则表达式_Regex - Fatal编程技术网

Regex 逗号分隔正则表达式

Regex 逗号分隔正则表达式,regex,Regex,我需要一个正则表达式来测试如下字符串: `8 - 12` `8-12` `8,9,10,11,12` `8, 9, 10, 11, 12` 它需要测试给定的输入是否符合上述格式,或者给出一个由连字符分隔的限制表示的数字范围(比如8到12),或者一个逗号分隔的数字列表。在这两种情况下,应忽略空格 我从哪里开始?类似于 \d+\s?[-,]?\s? 也许?这个表达式应该起作用/(^\d+\s*?\-\s*?\d+$)|(^\d+(\s*?\,\s*?\d+$)*$)/为了增加正则表达式的易读性,

我需要一个正则表达式来测试如下字符串:

`8 - 12`
`8-12`
`8,9,10,11,12`
`8, 9, 10, 11, 12`
它需要测试给定的输入是否符合上述格式,或者给出一个由连字符分隔的限制表示的数字范围(比如8到12),或者一个逗号分隔的数字列表。在这两种情况下,应忽略空格

我从哪里开始?

类似于

\d+\s?[-,]?\s?

也许?

这个表达式应该起作用
/(^\d+\s*?\-\s*?\d+$)|(^\d+(\s*?\,\s*?\d+$)*$)/
为了增加正则表达式的易读性,我建议在检查之前删除空格-根据迭代次数/数据大小,单独调用不应该有明显的性能影响

简单的回答是:

var str = '8 - 12';
str = str.replace(/\s+/g,'');
var matches = (/^\d+([,-]\d+)+$/).test(str); //Will allow "8-12,13"
一个不那么宽容的回答:

var str = '8 - 12';
str = str.replace(/\s+/g,'');
var matches = (/^\d+(-\d+|(,\d+)+)$/).test(str); //Won't allow mixed formats

如果不检查整个字符串,当然可以从表达式中删除
^
$
,即
\d+([,-]\d+)

忘记提及,这是在JavaScript中。试图调整提到的表达式,但遇到麻烦请确保将模式放在两个正斜杠之间,如:/\d+\s?[-,]?\s?/g g g是一个标志,表示“全局搜索”。您是试图使用此表达式提取任何数据,还是只是检查输入以确保其匹配?是否应
8-12,5,6
匹配?或者每个字符串只有一种格式?