- 我的要求是“名称应该开始以字母表,应该有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,它不工作。在这些情况下应该允许下划线。 –