我有一个任务,用户应该能够编辑地址字段的第一行,但是他们应该只能使用一个逗号,但可以将该逗号放在字符串中的任何位置。
我想知道是否有办法在JavaScript中完成此操作?
到目前为止,我已尝试过:
^[a-zA-Z0-9\&\-\,\.\/\'_ ]+$
但是这个正则表达式允许我输入多个逗号。
所以我希望正则表达式允许用户这样做:
21,Tash Place N13 2IJ或者: ,Tash Place 21 N13 2IJ
但不是这样:
21,Tash Place,N13,2IJ
任何帮助将不胜感激
答案 0 :(得分:1)
您可以使用
/^[-a-zA-Z0-9&.\/'_ ]*(?:,[-a-zA-Z0-9&.\/'_ ]*)?$/
请参阅regex demo。
在这里,
^
- 匹配字符串的开头[-a-zA-Z0-9&.\/'_ ]*
- 匹配0 +字母,数字或-./'_
符号,然后(?:,[-a-zA-Z0-9&.\/'_ ]*)?
- 可选序列(1或0次出现):
,
- 一个逗号(因此,只允许一个)[-a-zA-Z0-9&.\/'_ ]*
- 匹配0 +字母,数字或-./'_
符号,然后$
- 字符串结束。另一种方法是向正则表达式添加(?!(?:[^,]*,){2})
否定前瞻:
/^(?!(?:[^,]*,){2})[-a-zA-Z0-9&.\/',_ ]+$/
^^^^^^^^^^^^^^^^^
如果除了(?!(?:[^,]*,){2})
之外有2个0 +字符序列,然后字符串中有,
,,
前瞻将使匹配失败。