我有以下正则表达式。我想要像abcd,*,acd123
等那样进行验证。我不希望*与任何类似的abc *混合使用,只有在被拒绝之后才应该允许* {1}}
** or *,*
有效的:
/^([A-Za-z\d\/\*]+(,[A-Za-z\d\/\*]+)*)?$/.test(v)
无效:
ADSAD,*,adsad
*,adsds,asd123
答案 0 :(得分:0)
将/
放在字符类之外,只允许它替代字母数字或/^(?!.*\*.*\*)(?:(?:\*|[A-Za-z\d\/]+)(?:,(?:[A-Za-z\d\/]+|\*))*)?$/
符号:
^
请参阅regex demo
<强>详情:
(?!.*\*.*\*)
- 字符串开头*
- 一旦字符串中有2个(?:(?:\*|[A-Za-z\d\/]+)(?:,(?:[A-Za-z\d\/]+|\*))*)?
符号(?:\*|[A-Za-z\d\/]+)
- 一个可选组(整个字符串可以为空)匹配:
*
- \*
(|
)或(/
)1个或多个字母数字或[A-Za-z\d\/]+
符号((?:,(?:[A-Za-z\d\/]+|\*))*
),然后,
- 零个或多个序列:
(?:[A-Za-z\d\/]+|\*)
- 逗号/
- 一个或多个字母数字或*
符号或$
<form action="" method="post" id="myform">
<input id="amount" type="text" placeholder="Give amount" name="myamount"/>
<button class="btn btn-lg" type="submit" id="btn1" >FirstBTN</button>
<button class="btn btn-lg" type="submit" id="btn2">SecondBTN</button>
</form>
- 字符串结束。答案 1 :(得分:0)
我不确定它会解决你的整个问题,但发布的问题可以通过这种方式解决:
^([^*]*,)?\*(,[^*]*)?$
,其中
^
是字符串的开头; [^*]
是不星号的任何字符。
[^*]*,
,它表示任意数量的字符不是星号,后跟逗号; ([^*]*,)?
表示我们在字符串中只有零个或最多一个。\*
是星号字符。由于它是一个特殊的,我们需要使用\
; $
表示字符串的结尾。结果如下:
> /^([^*]*,)?\*(,[^*]*)?$/.test('abc,*,def')
true
> /^([^*]*,)?\*(,[^*]*)?$/.test('abc,def')
false
> /^([^*]*,)?\*(,[^*]*)?$/.test('abc,*,def,*,a')
false
> /^([^*]*,)?\*(,[^*]*)?$/.test('abc,*')
true
> /^([^*]*,)?\*(,[^*]*)?$/.test('*,abc')
true