[英]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
這可以幫助您找到出現在3位數字之前的第一個字符:
\\ w(?= \\ d {3}) 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.