簡體   English   中英

用於驗證單詞的正則表達式不包含數字或特殊字符

[英]Regex to validate words do not contain numbers or special characters

我正在開發一個在Android上運行的Java應用程序。 我正在嘗試選擇所有不包含任何嵌入式數字或符號的單詞。

我想出的最好的是:

\b[a-zA-Z]+[a-zA-Z]*+\b

測試數據:

this is a test , an0ther gr8 WW##ee one, w1n 1test test1 end

結果是選擇了以下內容: this, is, a, test, WW##ee, one, end

我需要從結果中刪除WW##ee

您不應該使用單詞邊界元字符\\b因為它與WW后面WW #字符的位置相匹配。 此位置本身就是單詞邊界。 因此,您應該采用另一種方式:

(?<![\S&&[^,]])[a-zA-Z]+(?![\S&&[^,]])

使用Java的regex的字符類交集功能,您可以定義允許在單詞字符之后或之前出現的標點符號。 這是一個逗號,

您可以使用“向后看”和“向前看”來檢查是否沒有#

\b(?<!\#)[a-zA-Z]+(?!\#)\b

隨着我獲得更多幫助,我的解決方案有所發展。 因此,這是我目前最好的解決方案,但仍然有點不足。 我無法在拒絕“ -this-”的同時接受“原樣”,而在拒絕“ / slash /”的同時接受“和/或”的類似情況。 同樣為了簡單起見,我使輸入數據每行一個字。

^(?:[\\ p {P} \\ p {S}]) ?((?:[\\ p {L} \\ p {Pd}'])+)(?:[\\ p {P} \\ p { S}]) $

原樣被選擇為有效

-這是有效的,但我希望不是

和/或無效,但我希望它將被選中

/ slash /選擇“ slash”有效

(測試)“測試”被選為有效

[測試]“測試”被選為有效

<test>“測試”被選擇為有效

暫無
暫無

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

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