匹配必须包含以下内容的域名有什么好的,清晰的正则表达式:
澄清一下,这是为了验证域名。虽然互联网社区中有一些支持域名国际化的举措,但我对此进行了相当多的研究,并使我的解释相当简单,只包含属于现代英国英语字符集的字符的域名(包括号码)由域名系统(DNS)可靠地处理。我没有表示要禁止国际化的愿望 - 我在职业生涯中做了很多相反的工作!
要回答这个问题,我所寻找的是这样的(测试和工作)。对不起原来的问题没有明确说明我想要做什么,但是我已经提出了帮助我为社区提供这个答案的建议:
^ [\ w-。] * $
答案 0 :(得分:3)
你可以使用这个:
(?i)[a-z0-9\p{Z}]
其中\p{Z}
是"所有分隔符" class和i
ignore-case选项。
答案 1 :(得分:2)
您可以使用[a-zA-Z\d\s\p{P}]+
作为最简单的解决方案。或者使用非unicode解决方案>>
POSIX定义了字符类[:...:]
,但并非每个正则表达式引擎都支持它们。
但是可以使用替代装置......
[:alnum:] [A-Za-z0-9] Alphanumeric characters
[:space:] [ \t\r\n\v\f] Whitespace characters
[:punct:] [\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-] Punctuation characters
所以把它们放在一起你就会得到
^[A-Za-z0-9 \t\r\n\v\f\]\[!"#$%&'()*+,./:;<=>?@\^_`{|}~-]+$
通过这种方式,您可以看到您要匹配的内容以及不匹配的内容。请注意,某些字符会被\
转义,因为没有转义它们会有不同的含义。