9字符的正则表达式,其中8必须是数字

时间:2018-05-18 08:15:52

标签: javascript regex

我正在研究JavaScript并且有非常基本的要求。 需要模式来查看字符串中的9个长度,其中8个必须是从起始和最后的数字必须是char存在。

示例:

有效值:

  

12345678   
  12345678A

无效值:

  

a12345678   
  12345678aa

为此,我写了以下模式:

var externalId = value;
var matchArr = externalId.match(/\d{0,8}[a-z|A-Z]?)/);
console.log(matchArr);

但它没有按预期工作 有人可以帮我这个吗?

3 个答案:

答案 0 :(得分:1)

匹配8个数字,后跟字母使用模式/^\d{8}[a-z]?$/i

function check(el) {
var externalId = $(el).val();
var matchArr = externalId.match(/^\d{8}[a-z]?/i);
console.log(matchArr);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Enter 8 numbers and letter: <input type="text" id="text" onChange="check(this)"/>

正则表达式问题(/\d{0,8}[a-z|A-Z]?)/):

\d{0,8} - 允许0到8个数字序列 [a-z|A-Z] - 允许大写,小写字母和“|” - 它不是组分隔符,它是文字“|”。
[...]? - 允许前一组中的零个或一个字符 ) - 是文字“)”而不是捕获组结束,因为找不到组的开头

答案 1 :(得分:0)

此正则表达式捕获每个字符串,包含8个数字和一个字符。

(\d{8}[A-z])(?:$|\s)

答案 2 :(得分:0)

此正则表达式捕获8个数字和最多一个字母

^[\d]{8}[A-z]{0,1}$