- 我的要求是「名稱應該開始以字母表,應該有ATLEAST 字符和表達不能末用特殊字符,但特殊字符可以在中間。「它最終也不應該允許下劃線。
- 正在使用的正則表達式
[a-zA-Z][\w]{1,}.*[\w]
- 上面的正則表達式不承認下劃線
(_)
作爲特殊字符在最後。 - 當我鍵入「sss_」它不能識別。
當我輸入「sss @」或「sss#」或「sss $」來識別時。定期爲不允許使用特殊字符末包括下劃線和只有3個字符的限制
預期的結果 「測試」, 「測試@測試」, 「test_test」, 「TES」
意想不到的結果 「TES @」, 「TEST_」, 「TE」
1
A
回答
1
更新2:
既然您現在說它是在Android中,請刪除(?U)
。所有的速記字符類是已經支持Unicode的在Android正則表達式:
"\\p{L}+(?:[\\W_]\\p{L}+)*"
而且隨着matches()
使用它。
更新答案
使用
Boolean isValid = groupNameString.matches("(?U)\\p{L}+(?:[\\W_]\\p{L}+)*");
見online Java demo。使用String#matches()
時,因爲這種方法主播默認模式
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
System.out.println(validateName("Dąb_rośnie$gdzieś#tu"));
System.out.println(validateName("Some_string_here"));
}
private static boolean validateName(String name) {
if (name.matches("(?U)\\p{L}+(?:[\\W_]\\p{L}+)*")) {
return true;
}
return false;
}
}
注意,你甚至不需要錨。
該[\\W_]
將匹配任何特殊字符包括 a _
。
原來的答覆
要匹配letters
+(_
+ letters
)*
模式,你可以使用
^[^\W\d_]+(?:_[^\W\d_]+)*$
相反的[^\W\d_]
,您可以在JS或任何其他引擎不是使用[a-zA-Z]
Unicode識別,你只需要處理ASCII字母。
的Unicode的等價:
^\p{L}+(?:_\p{L}+)*$
這裏,\p{L}
匹配任何Unicode字母。
詳細:
^
- 字符串錨開始[^\W\d_]+
/\p{L}+
- 1個或多個字母(?:_[^\W\d_]+)*
- 零次或多個出現:_
- 一個_
[^\W\d_]+
/\p{L}+
- 1或多個字母
$
- 串錨的端部。
請參閱this regex demo。
+0
評論是不適合擴展討論;這個談話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/138401/discussion-on-answer-by-wiktor-stribizew-regular-expression-for-not-allowing-spe)。 –
0
嘗試此正則表達式表達
^[A-z]+[^\`|\~|\!|\@|\#|\$|\%|\^|\&|\_|\*|\(|\)|\+|\=|\[|\{|\]|\}|\||\\|\'|\<|\,|\.|\>|\?|\/|\""|\;|\:|\s]+$
相關問題
- 1. 允許下劃線「_」作爲一個特殊的字符
- 2. 只允許字母和特殊字符
- 3. 正則表達式限制特殊字符,只允許DOT和&
- 4. 不允許特殊字符和只有大寫字母p:inputText Primefaces
- 5. 如何限制字符串不允許使用數字或特殊字符?
- 6. Yii2規則,允許所有的字母(包括特殊字符),但沒有特殊字符?
- 7. 只允許字母,數字,下劃線或連字符django
- 8. 不允許在字符串中使用特殊字符
- 9. 的preg_match允許特定特殊字符的字符串
- 10. 允許特殊字符爲ng-pattern
- 11. RegEx只允許英文文本和沒有特殊字符
- 12. jquery驗證字符串 - 只允許數字和特定字符
- 13. 允許一些特殊字符和字母數字字符
- 14. Robot.txt特殊字符不允許
- 15. 只允許在字符串中使用字母數字,短劃線,下劃線和句點(Javascript)
- 16. 只允許使用字母和下劃線使用javascript
- 17. 定期爲有特殊字符數字表達** **只有
- 18. 正則表達式只允許某些特殊字符,並且還包括字母數字字符
- 19. 正則表達式允許一個特殊字符(:)和數字和字母只
- 20. 斯威夫特:允許特殊字符
- 21. Indy IMAP不允許使用特殊字符作爲密碼
- 22. javascript驗證,除了' - '和'_'外不允許使用特殊字符
- 23. 正則表達式,應該允許有限的特殊字符
- 24. 限制一個文本框,以允許在開始時使用特殊字符
- 25. 正則表達式只有一次一個特殊字符從允許的特殊字符的Javascript
- 26. 允許iOS中的特殊字符
- 27. 允許asp.net 3.5中的特殊字符
- 28. 允許URLRequest中的特殊字符httpBody
- 29. 限制特殊字符
- 30. JavaScript RegEx僅允許AlphaNumeric字符和一些特殊字符
'\ w'一個'_'匹配。用'\ w'替換''''''替換''''從'\ w'中「排除」(或稱爲「減去」)。請注意'。*'匹配任何0+字符(除換行符外)。 –
裏面有什麼?只是信件? ASCII還是Unicode?哪個標籤有效:JS或PCRE? –
是的,它的工作,但如果我給像例如a_a,team_testing,它不工作。在這些情況下應該允許下劃線。 –