regex 模式的正则表达式有固定的起始字符串,然后一些模式和总长度应该是14 [重复]

mnemlml8  于 2023-04-22  发布在  其他
关注(0)|答案(2)|浏览(112)

此问题已在此处有答案

Regular expression limit string size(3个答案)
2天前关闭。
如果输入的字符串不像G6 A123 -4853473,我想禁用按钮
验证条件:字符串应该以G6开头,之后它应该包含一个或多个字母,并且应该包含一个连字符(-),连字符不应该在最后一个位置,字符串的总长度应该是14
我用的是angular,我试过这个^([G6][A-Z]*[0-9]*[-][0-9]*)$

<input matInput type="search" #filter>
<button mat-raised-button color="primary" [disabled]="!filter.value.match('^([8D][A-Z]*[0-9]*[-][0-9]*)$')"> Search 
</button>

这里面的问题是
1.它无法验证字符串长度。
1.连字符可位于最后位置

cx6n0qe3

cx6n0qe31#

您可以使用lookahead来验证字符串长度:

^(?=.{14}$)G6(?=.*[A-Z])[A-Z0-9]+-[A-Z0-9]+

它要求在字符串的开头之后有14个符号和字符串的结尾。
(?=.*[A-Z])要求在G6之后的某个地方存在大写字母。
此外,要检查连字符后是否有数字,可以使用+限定符。
演示here

q5lcpyga

q5lcpyga2#

试一次

^abc([a-zA-Z0-9]+)$

^G6[A-Za-z]+-[A-Za-z0-9]{7}$

此正则表达式将匹配任何以“abc”开头并后跟一个或多个字母数字字符的字符串。

相关问题