如何编写正则表达式匹配模式末尾仅有一个数字?

3

我的领域应该符合A111-1A1的格式,但是我的正则表达式允许最后一个数字超过一位(例如A111-1A1212341)。我该如何修复它?

以下是我目前正在使用的正则表达式。

var validchar = /^[A-Z](([0-9]{3})+\-)[0-9][A-Z][0-9]+$/;

1
请更明确地指定所需的模式。 - jjnguy
var validchar = /^A-Z[0-9][A-Z][0-9]+$/; 奇怪,我不知道在第一次发布中为什么会发错正则表达式。 - Guy needing help
3个回答

2

在你的模式末尾删除+。这是允许在末尾有多个数字的原因。

var validchar = /^A-Z[0-9][A-Z][0-9]$/;

然而,您的模式似乎不太适合实现您所说的目标。这确实是您正在使用的确切模式吗?


谢谢,问题出在“+”上。 - Guy needing help
啊哈,现在我看到了你的更新,加上了真正的原始模式。很高兴能帮忙! - Andrew Barber

0

试试这个

var validchar = /^[A-Z][0-9]{3}\-[0-9][A-Z][0-9]$/;

或者从正则表达式的末尾移除 + 符号。

var validchar = /^A-Z[0-9][A-Z][0-9]$/;

0

只需从您的正则表达式中删除最后一个+即可:

var validchar = /^[A-Z]([0-9]{3})+\-[0-9][A-Z][0-9]$/;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接