在现有regex Java中添加引号



我有这个现有的正则表达式:^[_A-Za-z0-9-+]+(\.[_A-Za-z0-9-]+)*

我想在此正则表达式中添加一个引号。它可以在任何地方,并且必须为零或只出现一次。

我还没有找到我需要添加什么才能做到这一点。有人有主意吗?

您可以将'添加到两个字符类中,并通过在预测器中使'之前和之后的内容可选,在字符串中的任何位置都存在可选'时,使用正向预测器断言启动模式。

^(?=[w.+-]*(?:'[w.-]+)?$)[w+'-]+(?:.[w-']+)*$

解释

  • ^字符串开始
  • (?=积极前瞻,断言右边的是
    • [w.+-]*匹配任何[w.+-]*的0+倍
    • (?:'[w.-]+)?$可选地将'和0+乘以[w.-]中的任何一个,并断言字符串的末尾
  • )关闭展望
  • [w+'-]+匹配1+字字符'-
  • (?:.[w-']+)*可选择重复匹配前面的.
  • $字符串末尾

Regex演示

在Java 中

String regex = "^(?=[\w.+-]*(?:'[\w.-]+)?$)[\w+'-]+(?:\.[\w-']+)*$";

最新更新