我需要构造一个正则表达式,使其在开头或结尾不允许/
,并且序列中不应有多个/
。
Valid Expression is: AB/CD
Valid Expression :AB
Invalid Expression: //AB//CD//
Invalid Expression: ///////
Invalid Expression: AB////////
/
字符只是两个单词之间的分隔符。它的长度不应超过单词之间的一个。
答案 0 :(得分:0)
[a-zA-Z]+(/[a-zA-Z]+)+
匹配
a/b
a/b/c
aa/vv/cc
与
不匹配a
/a/b
a//b
a/b/
演示
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Reg {
public static void main(String[] args) {
Pattern pattern = Pattern.compile("[a-zA-Z]+(/[a-zA-Z]+)+");
Matcher matcher = pattern.matcher("a/b/c");
System.out.println(matcher.matches());
}
}
答案 1 :(得分:0)
这个正则表达式做到了:
^(?!/)(?!.*//).*[^/]$
所以在java:
if (str.matches("(?!/)(?!.*//).*[^/]"))
请注意matches()
隐含^和$,因为匹配必须与整个字符串匹配才为真。
答案 2 :(得分:0)
假设您只想在斜杠之间允许使用字母数字(包括下划线),那么它非常简单:
boolean foundMatch = subject.matches("\\w+(?:/\\w+)*");
<强>解释强>
\w+ # Match one or more alnum characters
(?: # Start a non-capturing group
/ # Match a single slash
\w+ # Match one or more alnum characters
)* # Match that group any number of times