正则表达式匹配字符/数字/数字/数字

时间:2015-10-01 14:38:23

标签: javascript regex

小提琴: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?

5 个答案:

答案 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))

Check the Demo fiddle

更新边界支持:

正则表达式也会与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

Check the demo fiddle 2

答案 3 :(得分:0)

在您的示例中,您要从"句子"中挑选一个字符串,因此请删除^。同时删除逃离\的{​​{1}}。所以你想要:

[

在此测试:http://regexr.com/3bta7

答案 4 :(得分:-1)

这可以帮助您找到3位数之前出现的第一个字符:

<强> \ W(?= \ d {3})