簡體   English   中英

正則表達式以匹配字符/數字/數字/數字

[英]Regex to match char/digit/digit/digit

小提琴: http : //jsfiddle.net/rtucgv74/

我正在嘗試用3位數字匹配第一個字符。 所以下面的代碼應該警告f234 但是相反,返回null嗎?

src:

var reg = /^\[a-zA-Z]\d{3}/;

alert(reg.exec(("test f234 sadfas")[1]))

如何從字符串中提取char / digit / digit / digit?

幾乎正確,但是正則表達式中的第一個反斜杠使[匹配實際的括號,而不是定義字符集。

並且^阻止它不匹配字符串開頭的任何內容。

因此正確的正則表達式為/[a-zA-Z]\\d{3}//[az]\\d{3}/i

另一個問題是您嘗試讀取結果數組的第二個元素。 但是您沒有在正則表達式中捕獲任何內容,因此只有一個元素( [0] )是整個匹配項。

嘗試:

reg.exec("test f234 sadfas")[0]

正則表達式中的\\會轉義字符[,並使其變得不特殊。 而且字符^可以防止您的正則表達式與不在字符串開頭的任何部分匹配。

所以這將工作:

var reg = /[a-zA-Z]\d{3}/;
alert(reg.exec("test f234 sadfas")[0]); 

請注意,結果中只有一個元素,因為您的正則表達式不包含任何捕獲(括號之間的字符)。

嘗試這樣的事情:

var reg = /[a-zA-Z]{1}[0-9]{3}/;

alert("test f234 asdfghj".match(reg))

檢查演示小提琴

使用邊界支持進行更新:

該正則表達式還將匹配諸如ab c123 35之類的單詞,因此要使此行為無效,可以嘗試以下正則表達式:

var reg = /\b[a-zA-Z]{1}[0-9]{3}\b/;

alert("test aaf23412 asdfghj".match(reg)) // not match
alert("test f234 asdfghj".match(reg)) // match !
alert("test f2343 asdfghj".match(reg)) // not match

檢查演示小提琴2

在您的示例中,您是從“句子”中挑選一個字符串,因此刪除^ 同時刪除轉義[\\ 所以你要:

[a-zA-Z]\d{3}

在這里測試: http : //regexr.com/3bta7

這可以幫助您找到出現在3位數字之前的第一個字符:

\\ w(?= \\ d {3})

暫無
暫無

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

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