Java 正则表达式 - 不能以斜杠或空格开始或结束,并且没有连续的斜杠
Posted
技术标签:
【中文标题】Java 正则表达式 - 不能以斜杠或空格开始或结束,并且没有连续的斜杠【英文标题】:Java regex - can't start or end with slash or space, and no consecutive slashes 【发布时间】:2016-11-18 15:39:09 【问题描述】:我需要一个符合以下要求的正则表达式:
可以包含字母数字字符、空格和斜杠 不能以空格或斜线开头或结尾 不能包含连续的斜杠 长度可以在 2 到 20 个字符之间到目前为止,我有以下内容:
^[A-Za-z0-9][A-Za-z0-9/ ]0,18[A-Za-z0-9]$
我认为它涵盖了除连续斜杠之外的所有内容。有没有办法在 Java 正则表达式中满足这个要求?
【问题讨论】:
【参考方案1】:您可以在开头使用前瞻来添加该条件:
^(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]0,18[A-Za-z0-9]$
^^^^^^^^
见regex demo
由于(?!
,前瞻(?!.*//)
是negative,并且一旦在除换行符(.*
) 之外的任何0+ 个字符之后找到任何//
,则匹配失败。
你可以在没有^
和$
的情况下使用它和String#matches
(参见demo):
String input = "abc //abc";
if (!input.matches("(?!.*//)[A-Za-z0-9][A-Za-z0-9/ ]0,18[A-Za-z0-9]"))
System.out.println("Not matching!");
String#matches
需要完整的字符串匹配,但为了清楚起见,我会保持明确的锚点。
【讨论】:
以上是关于Java 正则表达式 - 不能以斜杠或空格开始或结束,并且没有连续的斜杠的主要内容,如果未能解决你的问题,请参考以下文章