簡體   English   中英

Java 正則表達式 - 驗證字符串是否包含由句點 (.) 分隔的非空修剪標記

[英]Java Regex - verify if string contains non-empty trimmed tokens separated by a period (.)

我正在嘗試編寫一個正則表達式,用於識別字符串是否包含由 . 分隔的非空標記(修剪后) . ,即以下形式。 這是我想出的最好的。

Pattern.compile("^(?!\\.)(?!.*\\.$)(?!.*?\\.\\.)(?!\\p{Space}$)(?!\\p{Space}\\.)(?!.*\\.\\p{Space}$)[\\p{Graph}\\p{Space}]+$", Pattern.UNICODE_CHARACTER_CLASS);

單元測試存在於以下代碼中: https://ideone.com/kuej3D

這適用於所有情況。 然而,我覺得有更好的方法來做同樣的事情。

例如,

如何檢查表格的格式,

<s1><.s2>*

s1是修剪前導和尾隨空格后的非空字符串。

. 是字面時間

s2是修剪前導和訓練空間后的非空字符串。

*表示出現次數可以最小為 0,最大為無限。

前任:

alpha$#@.ksj`\\c.lijd*3260_+是一個有效的字符串

a b. c d. ef a b. c d. ef是一個有效的字符串

alpha. 是無效字符串

.beta是無效字符串

空字符串是無效字符串

是無效字符串

x..y..z是無效字符串

上面 ideone 代碼中的所有測試用例都應該打印true

試試這個正則表達式:

"\\s*[^.\\s]+\\s*(\\.\\s*[^.\\s]+\\s*)*"

對於修剪,它匹配開頭、每個點之前和之后以及結尾的可選空格。 不修剪可能更容易閱讀:

"[^.\\s]+(\\.[^.\\s]+)*"

此模式匹配不是點也不是空格的東西,可以選擇多次后跟. 以及不是點也不是空格的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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