[英]Regex that allows only single separators between words
我需要構造一個正則表達式,使得它不應在開始或結束處使用/
,並且順序中不得超過一個/
。
Valid Expression is: AB/CD
Valid Expression :AB
Invalid Expression: //AB//CD//
Invalid Expression: ///////
Invalid Expression: AB////////
/
字符只是兩個單詞之間的分隔符。 字之間的長度不得超過一。
[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());
}
}
這個正則表達式可以做到這一點:
^(?!/)(?!.*//).*[^/]$
所以在java中:
if (str.matches("(?!/)(?!.*//).*[^/]"))
請注意, matches()
暗示^和$,因為匹配必須匹配整個字符串才是true。
假設您只想在斜線之間允許字母數字(包括下划線),那就太簡單了:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.