Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何让它以特定的单词开始?_Regex - Fatal编程技术网

Regex 如何让它以特定的单词开始?

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-

我的工作是创建一个正则表达式,它匹配名称的任何变体: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-宽度匹配器。还具有多行功能的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