我需要验证文本框输入的信用卡号码。我已经有了不同信用卡的正则表达式:
- 签证:
^4[0-9]{12}(?:[0-9]{3})?$
- 万事达卡:
^([51|52|53|54|55]{2})([0-9]{14})$
- 美国运通:
^3[47][0-9]{13}$
和许多其他人。
问题是,我想根据不同的用户使用不同的正则表达式进行验证。例如:对于user1,可以使用Visa和Mastercard,而对于user2,可以使用Visa和American Express。所以我想动态地生成一个最终的正则表达式字符串,组合上面的一个或多个正则表达式字符串,比如:
user1Regex = Visa regex + "||" + Mastercard regex
user2Regex = Visa regex + "||" + American Express regex
有办法做到吗?谢啦
4条答案
按热度按时间goqiplq21#
你没有说明你的语言,但不管出于什么原因,我怀疑它是JavaScript。只要做:
这只是用一个管道
|
字符组合了两个模式,表示可选匹配。每个模式也用圆括号括起来进行分组。您还可以使用
(?:)
来加快执行速度(非捕获分组),但为了可读性,我省略了它。flseospp2#
使用|运算符和组都带有parentesis()
如果所有的正则表达式都是正确的,那么它应该可以工作
s1ag04yj3#
不确定你使用哪种语言来实现,但你可以使用单个
|
来使用逻辑或大多数正则表达式。我的建议是将每个正则表达式存储为字符串,然后在必要时进行连接和编译。在Python中,它类似于
cgfeq70w4#
合并两个或多个表达式,将每个表达式放在方括号中,并用途:
*?
这是要合并的迹象,按照相关性的顺序:
(A)*?(B)
| 示例2:
A|B
()()实施例3:
(A)(B)
()|()实施例4:
(A)|(B)