小白问个正则怎么写?

规则:
开头是两个大写英文,后面是数字,数字的中间可以输入字符(*),字符(*)是必须包含的,字符(*)必是这个顺序组合,且不能包含汉字。
这种验证,怎么写?

预期能匹配上 的示例 :
SA333(*)6222
SA3336222(*)
SA(*)3336222

预期不能匹配 的示例 :
SA3336222
SA333*()6222
SA333*62()22
333(*)6222 等等

阅读 2.5k
5 个回答

^[A-Z]{2}[0-9]*+\(\*\)[0-9]*$

数字中间才能有 *

/^[A-Z]{2}\d(?:\**\d)*$/
// 就把各种情况考虑进去就行
var reg = /^[A-Z]{2}((\d+\(\*\))|(\d+\(\*\)\d+)|(\(\*\)\d+))$/
reg.test('SA333(*)6222')
reg.test('SA3336222(*)')
reg.test('SA(*)3336222')

reg.test('SA3336222')
reg.test('SA333*()6222')
reg.test('SA333*62()22')
reg.test('333(*)6222')

稍微调整下,加个括号:
^[A-Z]{2}\d(?:\(\*\)*\d)*$

推荐问题
宣传栏