簡體   English   中英

如何在JS中為前2個字符編寫正則表達式可以是數字或字母,然后是連字符,然后是6位數字?

[英]How to write regex in JS for first 2 characters can be digit or alphabet and followed by hyphen and then 6 digit number?

我正在嘗試為以下格式創建正則表達式:

12-345678  Matches
AB-345678  Matches

$12-345678 Failed
%%-SDdfdf  Failed
  1. 前 2 個字符應為字母或數字示例 AA 或 12
  2. 第三個字符應該是強制性的 -(連字符)和
  3. 最后六個字符應該是數字
  4. 字符串長度不應超過 9 個字符

我寫了以下正則表達式,但它失敗了:

$('#customer-number').keyup(function(){
$(this).val($(this).val().replace(/^(d{2}|[a-z]{2})\-\\d{6}/,'$1-'))
});

但是正則表達式失敗了:

/^(d{2}|[a-z]{2})\-\\d{6}/

我是正則表達式的新手,請幫助我

嘗試以下

/^[a-zA-Z0-9]{2}-\d{6}/

在哪里

^在行首斷言位置

az在 a(索引 97)和 z(索引 122)之間的范圍內的單個字符(區分大小寫)

AZ A(索引 65)和 Z(索引 90)之間范圍內的單個字符(區分大小寫)

0-9范圍在 0(索引 48)和 9(索引 57)之間的單個字符(區分大小寫)

{2}量詞 — 精確匹配 2 次

-匹配字符 - 字面意思

\\d匹配一個數字(等於 [0-9])

{6}量詞 — 正好匹配 6 次

演示:

 console.log(/^[a-zA-Z0-9]{2}-\\d{6}/.test('12-345678')); //true console.log(/^[a-zA-Z0-9]{2}-\\d{6}/.test('AB-345678')); //true console.log(/^[a-zA-Z0-9]{2}-\\d{6}/.test('$12-345678')); //false console.log(/^[a-zA-Z0-9]{2}-\\d{6}/.test('%%-SDdfdf')); //false

您在d之前錯過了\\ ,您需要為大寫添加AZ並且您添加了一個\\來逃避另一個\\

^(\d{2}|[a-zA-Z]{2})\-\d{6}

演示: https : //regex101.com/r/SEQGOq/1

試試這個正則表達式/^([a-zA-Z]{2}|[0-9]{2})-\\d{6}/g

 function matchString() { var test1 = "11-122121"; var test2 = "1a-122121"; var test3 = "aa-122121"; var result1 = test1.match(/^([a-zA-Z]{2}|[0-9]{2})-\\d{6}/g); var result2 = test2.match(/^([a-zA-Z]{2}|[0-9]{2})-\\d{6}/g); var result3 = test3.match(/^([a-zA-Z]{2}|[0-9]{2})-\\d{6}/g); document.write("Output1 : " + result1 + "<br>"); document.write("Output2 : " + result2 + "<br>"); document.write("Output3 : " + result3); } matchString();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM