由逗号分隔的正则表达式重复模式

时间:2017-02-17 09:56:18

标签: javascript regex validation

我在Javascript中有以下正则表达式:

/\w{1,}\s*\w{1,}/  

检查字符串是否至少包含两个大于1个字符的单词。

前 -

asd fgh - Valid  
a b d dfd - Valid  
xscxs - Invalid

我现在有一个新的要求,我试图实施,但无法正确。

新要求:能够拥有与以前相同类型输入的逗号分隔列表。不能以逗号结尾。根据上述规则,每件物品必须有效 如果没有逗号,那么它也是有效的 此外,所有字符都是字母,没有数字/特殊字符

Valid:  HOH vfdffd,dsfds dfgd,UIU fgfd  
Valid:  JOI JOIO  
Invalid:  QASW fgdfg,  
Invalid:  sdfds,1234 dfgdfg  
Invalid:  JKJ,ABCD  

2 个答案:

答案 0 :(得分:0)

您可以将第一个要求的模式指定为[a-zA-Z]+(?:\s[A-Za-z]+)+以匹配1个以上的字母字符,然后匹配1个以上的空格+一个或多个字符的序列,然后在另一个组中重复该模式一个逗号:

/^[a-z]+(?:\s[a-z]+)+(?:,[a-z]+(?:\s[a-z]+)+)*$/i

请参阅regex demo(所有\s替换为演示中的空格,因为输入是一个多行字符串。)

如果允许多个空格,请将\s替换为\s+

<强>详情:

  • ^ - 字符串开头
  • [a-z]+ - 1+ letter
  • (?:\s[a-z]+)+ - 一个或多个序列(即空间是强制性的)
    • \s - 一个空格(添加+以匹配一个或多个发生)
    • [a-z]+ - 1+个字母
  • (?:,[a-z]+(?:\s[a-z]+)+)* - 零个或多个序列(即逗号是可选的)
    • , - 逗号
    • (?:\s[a-z]+)+ - 见上文
  • $ - 字符串结束。

答案 1 :(得分:0)

from subprocess import call

path = "..\batch"
call([path+"\test.bat"])