正则表达式匹配字母+;数字作为单独的单词(javascript)
我有以下regexp:正则表达式匹配字母+;数字作为单独的单词(javascript),javascript,regex,Javascript,Regex,我有以下regexp: (a | b | c | d | k)s?-?\d{1,2} 这或多或少是正确的。它应该匹配:字母a、b、c、d或k与一个或两个数字。例如: a1 k12 a-2 a1.//应该匹配 a1测试//应匹配 但问题是,它应该只匹配那些作为单独单词的项目,而不是在一个单词内。例如,它不应与以下内容匹配: abolsa1 阿莱克蒂 阿博尔萨124 ABOLSA12AB vērtība 428 您可以使用\b检测单词边界: \b(a|b|c|d|k)\s?-?\d{1,
- (a | b | c | d | k)s?-?\d{1,2}
字母a、b、c、d或k与一个或两个数字
。例如:
- a1
- k12
- a-2
- a1.//应该匹配
- a1测试//应匹配
- abolsa1
- 阿莱克蒂
- 阿博尔萨124
- ABOLSA12AB
- vērtība 428
\b
检测单词边界:
\b(a|b|c|d|k)\s?-?\d{1,2}\b
您可以使用
\b
检测单词边界:
\b(a|b|c|d|k)\s?-?\d{1,2}\b
使用
\b
匹配单词边界
\b(a|b|c|d|k)\s?-?\d{1,2}\b
我基本上在原始正则表达式的末尾和开头添加了\b
。这意味着开始和结束必须是单词边界
你可以把单词边界想象成
(?<=\w)(?=\W)|(?<=\W)(?=\w)
(?使用\b
匹配单词边界
\b(a|b|c|d|k)\s?-?\d{1,2}\b
我基本上在原始正则表达式的末尾和开头添加了\b
。这意味着开头和结尾必须是单词边界
你可以把单词边界想象成
(?<=\w)(?=\W)|(?<=\W)(?=\w)
(?将正则表达式包装在\b
中,这意味着在开头和结尾有一个单词边界
此外,使用字符类而不是组,效率更高:
\b[abcdk]\s?-?\d{1,2}\b
在线试用。将正则表达式包装在\b
中,这意味着在开头和结尾都有一个单词边界
此外,使用字符类而不是组,效率更高:
\b[abcdk]\s?-?\d{1,2}\b
在线试试。其他答案都很好。我想我会添加我的答案,虽然略有不同,但也使用了单词boundary\b
的概念
\b[abcdk]-?\d{1,2}\b
其他答案在这里也很好。我想我会添加我的答案,虽然略有不同,但也使用了单词boundary\b
的概念
\b[abcdk]-?\d{1,2}\b