小提琴: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?
答案 0 :(得分:2)
几乎正确,但正则表达式中的第一个反斜杠是使[
匹配为实际括号而不是定义字符集。
^
阻止它匹配不在字符串开头的任何内容。
正确的正则表达式是/[a-zA-Z]\d{3}/
或/[a-z]\d{3}/i
另一个问题是您尝试读取结果数组的第二个元素。但是你没有捕获正则表达式中的任何内容,因此只有一个元素([0]
)就是整个匹配。
尝试:
reg.exec("test f234 sadfas")[0]
答案 1 :(得分:0)
你的正则表达式中的\转义字符[并使它不特别。字符^阻止你的正则表达式匹配不在字符串开头的任何部分。
所以这会奏效:
var reg = /[a-zA-Z]\d{3}/;
alert(reg.exec("test f234 sadfas")[0]);
请注意,结果中只有一个元素,因为正则表达式不包含任何捕获(括号中的字符)。
答案 2 :(得分: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 :(得分:0)
答案 4 :(得分:-1)
这可以帮助您找到3位数之前出现的第一个字符:
<强> \ W(?= \ d {3}) 强>