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