Java 正则表达式。只有一点
我正在尝试编写一个正则表达式:Java 正则表达式。只有一点,java,regex,Java,Regex,我正在尝试编写一个正则表达式: Pattern pattern2 = Pattern.compile("^([a-zA-Z0-9_'.-]{2,15})$"); Matcher matcher2 = pattern2.matcher(username); 它应该做的是: - all letters are allowed - all digit are allowed - symbols such as _'- are allowed 我想补充一点,只允许有一个点 user.name
Pattern pattern2 = Pattern.compile("^([a-zA-Z0-9_'.-]{2,15})$");
Matcher matcher2 = pattern2.matcher(username);
它应该做的是:
- all letters are allowed
- all digit are allowed
- symbols such as _'- are allowed
我想补充一点,只允许有一个点
user.name ok
use.rna.me not ok
非常感谢你的帮助 您可以通过在开始处锚定前瞻来实现这一点:
"^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9_'.-]{2,15}$"
^^^^^^^^^^^^^^^^^^
此外,您可以使用\w
而不是[a-zA-Z0-9\]
(如果您不添加(?U)
内联修饰符或模式.UNICODE字符类
标志):
但是,上面的模式要求字符串中有1个点如果不需要点,则反向要求:如果存在两个点,则匹配失败:
"^(?![^.]*\\.[^.]*\\.)[\\w'.-]{2,15}$"
^^^^^^^^^^^^^^^^^^^^
图案细节:
-字符串的开头^
)-如果开头有0+个字符而不是(?![^.]*\..[^.]*\...[^.]*\..
,则匹配失败的负前瞻,然后从开头再加上一个
(请注意,这可以缩短为
){2})(?!(?:[^.]*\\.
-2到15个字符,一个单词([\\w.-]{2,15}
)或[a-zA-Z0-9\
或连字符
-字符串结束$
"^(?=[^.]*\\.[^.]*$)[a-zA-Z0-9_'.-]{2,15}$"
^^^^^^^^^^^^^^^^^^
此外,您可以使用\w
而不是[a-zA-Z0-9\]
(如果您不添加(?U)
内联修饰符或模式.UNICODE字符类
标志):
但是,上面的模式需要字符串中有一个点。如果不需要一个点,则颠倒要求:如果有两个点,则匹配失败:
"^(?![^.]*\\.[^.]*\\.)[\\w'.-]{2,15}$"
^^^^^^^^^^^^^^^^^^^^
图案细节:
-字符串的开头^
)-如果开头有0+个字符而不是(?![^.]*\..[^.]*\...[^.]*\..
,则匹配失败的负前瞻,然后从开头再加上一个
(请注意,这可以缩短为
){2})(?!(?:[^.]*\\.
-2到15个字符,一个单词([\\w.-]{2,15}
)或[a-zA-Z0-9\
或连字符
-字符串结束$
- 你可以用
^(?=.{2,15}$)[\w-']*\.?[\w-']*$
首先,它确保整个表达式的长度为2-15个字符,并具有积极的前瞻性。然后它匹配任意数量的单词字符(a-z
,a-z
,0-9
和
),后跟一个可选的点,再后跟任意数量的单词字符
s。锚定(^
-行的开始,$
-行的结束)确保没有其他内容。您可以使用
^(?=.{2,15}$)[\w-']*\.?[\w-']*$
首先,它确保整个表达式的长度为2-15个字符,并具有积极的前瞻性。然后它匹配任意数量的单词字符(a-z
,a-z
,0-9
和
),后跟一个可选的点,再后跟任意数量的单词字符
s。锚定(^
-行的开始,$
-行的结束)确保不存在任何其他内容。您可以尝试反向前瞻
O/p:
你可以试试消极的前瞻
O/p:
对于{2,15}我的意思是用户名必须大于2,小于15,对于{2,15}我的意思是用户名必须大于2,小于15。看起来我已经完成了。如果有任何不清楚或遗漏,请随时ping我。可以使用正则表达式演示。此外,我将使用\\A
而不是^
和\\z
而不是真正的代码中的$
。此外,值得注意的是,尽管在字符类的结尾不必转义,有些人说,如果其他不太懂正则表达式的开发人员将来支持正则表达式,转义它仍然是一个好主意。看起来我已经完成了。如果有任何不清楚或缺少的地方,请随时ping我。可以使用正则表达式演示。此外,我将使用\\a
而不是^
和\\z
而不是实际代码中的$
。此外,值得注意的是,尽管字符类末尾的连字符不必转义,但有些人说,如果其他不太懂正则表达式的开发人员将来会支持正则表达式,那么转义它仍然是一个好主意。