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

问题描述

| 如何编写允许用户名中包含字符DOT(。)的正则表达式? 例如:
R. Robert
X. A. Pauline 
    

解决方法

用反斜杠转义点:
\\.
    ,
[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\'
    ,要在正则表达式中搜索点,通常需要对其进行转义,因为它是一个特殊字符。 用ѭ1逃脱。 如果它是捕获组的一部分,则无需逃脱:
[A-Za-z.]
将搜索字母和\。字符。     ,您的问题不是很清楚-对于初学者而言,正则表达式不“允许”或“不允许”任何东西,它们仅匹配(或不匹配)文本。这是调用正则表达式的代码,该正则表达式将决定要执行的操作(例如,正则表达式是在搜索无效字符的部分匹配项,还是为整个白名单指定匹配项,等等?)。 在两行之间阅读时,如果您要问如何在正则表达式中包含原义ѭ7字符,则需要对其进行转义-这在(几乎所有)正则表达式引擎中都意味着在其前面加反斜杠。 例如,正则表达式:
P\\..R
表示\“大写字母P,然后是句点(。),然后是任何字符,然后是大写字母R \”,并且将匹配
P.AR
P..R
P.$R
但不是
PEAR
PA.R
P.
P\\.AR
等等     ,性格 。是。 例如,如果要获取字母和点: [\\ w。] +