我的正则表达式有问题。有人可以帮我这个吗?要求:字符串应该是字母的,可以包含单个撇号和/或单个空格(大小应至少为2)
Valid strings:
1. 'abc
2.' abc
3.abc '
4.abc'
5.a 'bc
6.a' bc
我使用了以下正则表达式。它适用于方案2,4,6,但不适用于方案1,3,5
Regex:
"(([a-zA-Z][a-zA-Z])| " +
"([a-zA-Z]*\\s\\'[a-zA-Z]*)|" +
"([a-zA-Z]*\\'\\s[a-zA-Z]*)|"+
"[a-zA-Z]*|" +
"[a-zA-Z]\\s|" +
"[a-zA-Z]\\'|" +
"\\s[a-zA-Z]|" +
"\\'[a-zA-Z]|"+
"\\s[a-zA-Z]*|"+
"\\'[a-zA-Z]*|" +
"[a-zA-Z]*\\s|"+
"[a-zA-Z]*\\')"
答案 0 :(得分:1)
注意:由于输入为多行,因此链接在正则表达式中包含\r\n
^(?!(?:[^']*'){2})(?!(?:[^ ]* ){2})[a-z ']{2,}$
'abc
' abc
abc '
abc'
a 'bc
a' bc
abc
'
ab
a
a'' bc
a bc
以下只是符合要求的字符串
注意:倒数第二个字符串示例是'
(撇号和空格),根据OP的要求,它应匹配。
'abc
' abc
abc '
abc'
a 'bc
a' bc
abc
'
ab
^
在行首处断言位置(?!(?:[^']*'){2})
确定以下内容的否定前瞻不包括2个撇号'
(?!(?:[^ ]* ){2})
否定前瞻确保后续内容不包含2个空格
[a-z ']{2,}
匹配集合中的两个或多个字符$
断言行尾的位置答案 1 :(得分:-1)
根据提供的说明,您可以使用较小的内容来填充提供的电子邮件。
^( |'|[a-zA-Z]){2,}