正则表达式匹配域名的第一部分
我想完全合格的域名(FQDN)这样的匹配正则表达式:正则表达式匹配域名的第一部分
1.test02a-d.test.example.net
2.test02b-d.test.example.net
3.test03a.test.example.net
4.test03b.test.example.net
5.test04-d.test.example.net
6.test05.test.example.net
我想这正则表达式来得到FQDN的第一部分:
[^.]+
标准: 在这里,我需要得到具有字母“A”或在第一部分中号后“b” FQDN的列表。如上例所示1,2,3,4匹配此条件。 即 test02a,test02a-d,测试02B和test02b-d
FQDN 5和6应被忽略按照上述标准。
如何修改匹配此条件的正则表达式?
注:这应该在MySQL作为REGEXP,因此一些直接的JavaScript正则表达式没有工作。该解决方案应适用于JavaScript和MySQL。
MySQL版本:
^[^.]+[0-9]+[ab](-[^.]+)?[[:>:]]
JavaScript版本:
^[^.]+[0-9]+[ab](-[^.]+)?\b
regex101.com不支持MySQL的味道正则表达式,所以我只给JavaScript version。 test1bw.test.example.net作为测试字符串添加。
[[:>]]
是特定于MySQL的。对于JavaScript,应该使用\b
而不是[[:>]]
。 [[:>]]
是一个零长度断言,匹配一个单词的结尾(位置在ASCII字母,数字或下划线之后,但后面没有)。 \b
匹配一个单词开头或结尾的位置。
MySQL不支持任何速记字符类,所以[[:digit:]]
或[0-9]
应改为使用的\d
谢谢。您的解决方案与此“test1bw.test.example.net”匹配fqdn。数字后应该只有一个字母。那个字母表之后可以有连字符。这应该不匹配 –
@GaneshBabu固定。我建议你在你的问题中添加“test1bw.test.example.net”或其他测试字符串,以使你的标准更清晰。 – ltux
谢谢。它工作正常 –
尝试
^[^.]+\d[ab][^.]*
它会匹配,从线(^
)的任何字符(不止一个)不是一个点的开始。然后必须有一个数字后跟一个a
或一个b
,可选地后跟另一个不是点的字符序列。
[a-z]+[0-9]+[ab](-d){0,1}(.test.example.net)
这个正则表达式匹配你的前四个域名。在“[A-Z] +”也可以用“(测试)”规定 您可以在这个网站测试:http://regexr.com/
谢谢..它现在可以工作。如何忽略域名部分的其余部分。即,而不是test.example.net,可能有任何名称 –
你可以用你的域名替换正则表达式中的“.test.example.net”,否则你可以使用'[az] + [0- 9] + [ab]( - d){0,1}(。)+' – andii1997
谢谢..它工作正常。但是我对这种形式的例子“test01.test90a-d.example.net”进行了匹配。根据我的情况,我应该只匹配域名的第一部分 –
我需要对MySQL –
作品的想法对我来说:https://regex101.com/r/hL6aD0/ 1 –
@TomDoodler它匹配整个字符串的第一部分。我需要按照标准过滤掉fqdn。只有1,2,3,4应该匹配。 –