繁体   English   中英

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

[英]How do you write a regular expression that allows the special character DOT?

如何编写允许用户名中包含字符 DOT(.) 的正则表达式?

例如:

R. Robert
X. A. 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

等等

性格。 是。

例如,如果您想获取字母和点:

[\w.]+

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM