你如何编写一个允许特殊字符DOT的正则表达式?

你如何编写一个允许用户名中的字符DOT(。)的正则表达式?

例如:

R. Robert XA Pauline 

用反斜杠逃脱点: \.

[a-zA-Z. ]+ [a-zA-Z. ]+允许字母,点和空格字符。

 import java.util.regex.*; public class Test { public static void main(String [] args) throws Exception { String RE = "[a-zA-Z. ]+"; String name = args[0]; Pattern pattern = Pattern.compile(RE); Matcher m = pattern.matcher(name); System.err.println("`" + RE + (m.matches()?"' matches `":"' does not match `") + name + "'"); } } 

运行:

 $ java Test "R. Robert" `[a-zA-Z., ]+' matches `R. Robert' $ java Test "R.-Robert" `[a-zA-Z., ]+' does not match `R.-Robert' 

要在正则表达式中搜索点,您通常需要将其转义为特殊字符。

\. 逃离。

如果它是捕获组的一部分,则无需转义:

[A-Za-z.]将搜索字母和’。’ 字符。

你的问题不是很清楚 – 对于初学者来说,正则表达式不会“允许”或“禁止”任何东西,它们只是匹配(或不匹配)文本。 这是调用正则表达式的代码,它将决定做什么(例如正则表达式搜索无效字符的部分匹配,或指定整个白名单的匹配等?)。

如果您要求如何包含文字,请在行间阅读. 正则表达式中的字符,你需要逃避它 – 在(几乎?)所有正则表达式引擎意味着在它前面加上反斜杠。

例如,正则表达式:

 P\..R 

意思是“大写P,然后是句号(。),然后是任何字符,然后是大写R”,并且匹配

 P.AR P..R P.$R 

但不是

 PEAR PA.R P. P\.AR 

等等

人物 。 是。

例如,如果你想得到字母和点:

[\瓦特] +