Regex 如何让它以特定的单词开始?
我的工作是创建一个正则表达式,它匹配名称的任何变体:vic,Victor,Victoria,Victor,Victoria,VICKY,Victor。维多利亚,维克,维克 所以我写了这个 维克[a-z]|维克[a-z]|维克[a-z]*Regex 如何让它以特定的单词开始?,regex,Regex,我的工作是创建一个正则表达式,它匹配名称的任何变体:vic,Victor,Victoria,Victor,Victoria,VICKY,Victor。维多利亚,维克,维克 所以我写了这个 维克[a-z]|维克[a-z]|维克[a-z]* 不过我有个问题。例如,如果我键入Hello Avicoria,它将匹配字符串Victoria…如何使其匹配,以便第一个字符必须是V或V?如果需要单词的开头,可以使用\b单词边界0宽度匹配器。如果您需要行的开始,您应该使用^start of the line 0-
不过我有个问题。例如,如果我键入Hello Avicoria,它将匹配字符串Victoria…如何使其匹配,以便第一个字符必须是V或V?如果需要单词的开头,可以使用\b单词边界0宽度匹配器。如果您需要行的开始,您应该使用^start of the line 0-宽度匹配器。还具有多行功能的Regexp引擎还将定义\n字符串0宽度匹配器的开始。根据需要,将其中一个粘贴在regexp前面,如下所示:
^((Vic[a-z])|(vic[a-z])|(VIC[A-Z]*))
您还需要额外的括号,因为否则您将只在开始时匹配Victor,而在任何地方匹配Victor和Victor
这就是说,这不会匹配维克,因为你需要在它后面再加一个[a-z]。这将是正确的regexp:
^((Vic[a-z]*)|(vic[a-z]*)|(VIC[A-Z]*))
这将匹配维克多,但不匹配飞行员。如果您写的是\b而不是^,则在仍然不允许aVictor的情况下,您将另外匹配“我不是胜利者”。^字符表示字符串的开头,如
^(Vic[a-z])|(vic[a-z])|(VIC[A-Z]*)
您未能添加*
(Vic[a-z]*)|(vic[a-z]*)|(VIC[A-Z]*)
在下面的正则表达式中,您未能在前两个正则表达式上添加+或*
(Vic[a-z])|(vic[a-z])|(VIC[A-Z]*)
Vic[a-z]-它匹配Vic后面的任何一个字母字符,但不会匹配该单词Vic后面的多个字符。试试这个
/\bvic[a-zA-Z]{0,}/ig
为了
示例
'vic, Victor, Victoria, victor, Victoria, VICKY, VICTOR. VICTORIA, Vic, VIC, Hello aVictoriaX'.match(/\bvic[a-zA-Z]{0,}/ig)
//output
["vic", "Victor", "Victoria", "victor", "Victoria", "VICKY", "VICTOR", "VICTORIA", "Vic", "VIC"]
//Hello aVictoriaX isn't matched