我有这个现有的正则表达式:^[_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-']+)*$";