所以,我一直试图写出一个正则表达式,比如一个电阻值,它包含一定数量的数字,最多只有一个字母,但总是一定数量的字符总数(让我们用这个例子一个四字符的电阻代码)。
首先,我可以'\d*[RKM]\d*'
,但这样可以'R'
。
此外,我可以执行类似'[\dRKM]{4}'
的操作,但这样可以使'RRR4'
之类的内容不是我想要的值。
'\d{1,4}[Rr]\d{0,3} | ([RKM]\d{3}) | (\d{4})'
虽然更具体,仍然允许'1234R567'
不是四个字符。
基本上,是否有更简洁的方式来编写'[RKM]\d\d\d | \d[RKM]\d\d | \d\d[RKM]\d | \d\d\d[RKM] | \d\d\d\d'
?
答案 0 :(得分:9)
根据您的正则表达式风格,您可以使用前瞻:
^(?!(?:\d*\D){2})[\dRKM]{4}$
(?!(?:\d*\D)
- 断言没有两个非数字字符。或者:
^(?=.{4}$)\d*(?:[RKM]\d*)?$
(?=.{4}$)
- 断言字符串的长度为4。