我正在尝试查找具有三种可能形式的字符串:
ab10
ab 10
ab-10到目前为止,我已经成功创建了这个正则表达式,
/\s+[a-zA-Z]{2}[-|\s.]?\d{2,3}\s+/这适用于像这样的文本:
start foo ab 10 end foo.当搜索到的字符串位于文本的开头或结尾时,就会出现问题,如下所示:
ab 10 end foo.在这种情况下,开头没有空格。因此,我需要匹配字符串是否在文本的开头(或结尾),但我不知道如何进行匹配
有没有人能帮我一下?
发布于 2012-11-21 20:39:45
这应该可以解决您的问题:
/\b[a-zA-Z]{2}[-|\s.]?\d{2,3}\b/\b表示单词边界,它断言一边(在当前位置之前或之后)是非单词字符,另一边是单词字符(由\w定义的单词字符)。
注意,如果你有一个像#ab10.这样的字符串,那么ab10仍然是匹配的。但是因为_是一个单词字符,所以_ab10不会给出匹配结果。
如果您想断言要搜索的字符串前后的字符必须是空白字符(由\s定义),或者是行的开头/结尾。我采用了后顾之忧和前瞻零宽度断言。
/(?<=^|\s)[a-zA-Z]{2}[-|\s.]?\d{2,3}(?=\s|$)/上面的正则表达式在#ab10.或ab10.中找不到任何匹配项
发布于 2012-11-21 20:39:20
我觉得你想要word boundaries \b
/\b[a-zA-Z]{2}[-|\s.]?\d{2,3}\b/查看here on Regexr
现在匹配,如果之前没有单词字符,后面也没有单词字符。
单词字符是由字母、数字和下划线组成的预定义字符类\w的成员。
https://stackoverflow.com/questions/13493423
复制相似问题