所以,我一直试图写出一个正则表达式,比如一个阻值,它包含一定数量的数字,最多只有一个字母,但总是一定数量的字符总数(让我们用四个例子) - 字符电阻代码).
首先,我可以做,'\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'?
根据您的正则表达式风格,您可以使用前瞻:
^(?!(?:\d*\D){2})[\dRKM]{4}$
Run Code Online (Sandbox Code Playgroud)
(?!(?:\d*\D) - 断言没有两个非数字字符.要么:
^(?=.{4}$)\d*(?:[RKM]\d*)?$
Run Code Online (Sandbox Code Playgroud)
(?=.{4}$) - 断言字符串的长度为4.另请参阅:正则表达式:是否有AND运算符?