【发布时间】:2017-02-14 18:29:08
【问题描述】:
我正在尝试在我的 AngularJS 控制器中添加一个正则表达式,以验证文本输入框中的以下四个条件:
A)name (space) name,B)name,(comma) name,C)123456789(最多 9 位)D)123-45-6789
我创建了以下正则表达式:
1) 验证:/^[a-zA-Z0-9 ,\-]+[(?<=\d\s]([a-zA-Z0-9]+\s)*[a-zA-Z0-9]+$ /,
除了格式化最后四位数字并将数字限制为最多九个字符之外,这与我想要的很接近。
我还尝试根据我的研究组合以下正则表达式,但无济于事:
2) 验证:/^([0-9]{8,9})$/ + /^([A-z'\/-])+[\s]+([A-z'\/-])+$/ + /^([A-z'\/-])+[\s]*[\,]{1}[\s]*([A-z-\/'])+$/ + /^\d{3}-\d{2}-\d{4}$/,
3) 验证:/^([0-9]{8,9})$/ | /^([A-z'\/-])+[\s]+([A-z'\/-])+$/ | /^([A-z'\/-])+[\s]*[\,]{1}[\s]*([A-z-\/'])+$/ | /^\d{3}-\d{2}-\d{4}$/,
4) 验证:new RegExp('(' + /^([0-9]{8,9})$/ + ") | (" + /^([A-z'\/-])+[\s]+([A-z'\/-])+$/ + ") | (" + /^([A-z'\/-])+[\s]*[\,]{1}[\s]*([A-z-\/'])+$/ + ") | (" + /^\d{3}-\d{2}-\d{4}$/ + ')'),
我有三个问题:
是否可以创建一个验证这四个条件的正则表达式?
我没有正确组合这些吗?
或者我应该放弃这个正则表达式任务,只创建一个单独的函数来执行我的验证?
【问题讨论】:
-
也许我理解错了,但为什么不将它们与 |工作吗?
-
我认为它会起作用,但由于某种原因,系统似乎在 | 之后忽略了正则表达式符号
-
可能是因为您的第一个正则表达式有未闭合的括号?
-
谢谢,我不确定我是否理解,'(' + /^([0-9]{8,9})$/ + ") 不是右括号吗?
标签: javascript angularjs regex validation