簡體   English   中英

正則表達式僅允許單詞之間使用單個分隔符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM