我想用javascript写一个正则表达式以匹配以下有效方案。稍后,如果我必须使用组进行提取,那么我将能够这样做。
我尝试了下面的正则表达式,但是没有给我想要的模式。
/[0-9][+-[0-9]+]*/
正则表达式应该能够匹配“有效”方案。
// Valid 64344 9434 434-543 434-543 434 - 543 4435 - 343434 1-2,3,5,6 1-2,3,5,6-6,45-4 3,5,6, 8 - 9,24 1-2,3,5 ,6 1- 2,3, 5,6-6,45-4 // Invalid 23 - 2343.3434 343.3434 - 13.466 23 , 234, ,54 xyz 9 3,5,6,8-9,24, ,35,65,65 ,35,65,65 - ,3 5,65,65, 3,5,6, 8- 9,24, 1- 2,3, 5,6-6,4 5-4 , 35,65,6 5 ,35, 6 5,65,
答案 0 :(得分:1)
看一下样本,我觉得您想要的是一个用逗号分隔的数字,其中一些可以在1-2
之内排列,并且它们之间以及在字符串的开头或结尾都具有可选的空格。这是您可以使用的正则表达式,
^\s*\d+(?:\s*-\s*\d+\s*)?(?:\s*,\s*\d+(?:\s*-\s*\d+)?)*\s*$
说明:
^
-字符串的开头\s*
-输入开始处的可选空格\d+
-匹配一个或多个正义数字(?:\s*-\s*\d+\s*)?
-与-2
这样的范围内的数字匹配,其中可以有空格,而?
的末尾表示范围部分是可选的(?:\s*,\s*\d+(?:\s*-\s*\d+)?)*
-这个正则表达式部分确保数字可以用逗号分隔,其中的\d+(?:\s*-\s*\d+)?
部分启用2-3
形式的数字,其中?
表示可以只是纯数字而没有范围的一部分,而*
的全部可以是零次或更多次\s*
-输入末尾的可选空格$
-输入结束