簡體   English   中英

正則表達式模式檢查字符串是否沒有特殊字符 - Java

[英]Regex pattern to check if string has no special characters - Java

我想檢查一個字符串是否不包含 @、$ 等特殊字符,並且只包含字母數字和特殊字符,如“-”、“。”

我使用了如下的正則表達式模式,但它們都不起作用

  1. String regex = "^[a-zA-Z0-9_-.]*$";

  2. String regex = "+/^[a-z0-9]+(?:[._-][a-z0-9]+)*$/i";

  3. String regex = "^([-.A-Za-z0-9]){1,20}$";

  4. String regex = "^[a-zA-Z0-9_-.]*";

if (r.getTest().matches(regex)){}

編輯:

答案中的正則表達式工作正常,但是當將其作為條件添加到代碼中時,代碼總是返回 false,表示它包含特殊字符,而我在字符串中只有字母數字和點(。)。

他們都沒有工作。 任何幫助深表感謝。

我看到您的第一個正則表達式存在一個大問題,那就是- []之間,每個-表示一個范圍,除非它被轉義,或者它是第一個或最后一個字符。 有了你現在所擁有的,我得到了一個例外:

Exception java.util.regex.PatternSyntaxException: Illegal character range near index 13
^[a-zA-Z0-9_-.]*$

如果我將-移到最后,我可以成功創建一個應該工作的模式。

您在-之前錯過了一個\ 你應該使用

^[a-zA-Z0-9_\-.]*$

查看演示

暫無
暫無

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

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