正则表达式在模式中匹配名称

时间:2020-01-13 16:17:35

标签: javascript regex

我有一个与PUT my_index { "analysis" : { "analyzer" : { "email_analyzer" : { "filter" : [ "lowercase" ], "type": "custom", "tokenizer" : "uax_url_email" } } } } 相匹配的简单模式// create a socket for connecting to a server ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); if (ConnectSocket == INVALID_SOCKET) { WSACleanup(); fclose(fName); return 4; } 。我现在遇到的问题是记录中该人的姓氏带有连字符,如LASTNAME, FIRSTNAME MI_IDNUMBER。我尝试将^[a-zA-Z0-9, ]+_[a-zA-Z0-9]+之类的内容合并到其中,但这仅标识字符串中的WALKER-REYES, ANNA T_AW12345。将这一切串在一起的最佳方法是什么?并非所有名称都带有连字符。

1 个答案:

答案 0 :(得分:2)

构建正则表达式的方法不是最佳的。您要匹配每个字符(包括空格),直到找到下划线(_),然后匹配其余字符。而不是这样做,您不应该匹配空格并将字符串的每个部分都放在不同的组中。

您可以尝试使用支持连字符的正则表达式。

^(?: ?([a-zA-Z0-9\-]+),?){2} ([a-zA-Z0-9_]+)

Regular expression visualization

您可以在this regex101

上测试更多案例