【发布时间】:2017-08-08 15:18:33
【问题描述】:
- 我的要求是“名称应以字母开头,至少应有三个字符,并且不能以特殊字符结束,但是特殊字符可以出现在 中间 。”最后也不应允许下划线。
- 我正在使用的正则表达式
[a-zA-Z][\w]{1,}.*[\w] - 上述正则表达式不能将下划线
(_)识别为末尾的特殊字符。 - 当我输入“sss_”时,它无法识别。
当我输入“sss@”或“sss#”或“sss$”时,它会识别出来。
预期结果“test”、“test@test”、“test_test”、“tes”
意外结果“tes@”、“test_”、“te”
【问题讨论】:
-
\w匹配_。替换为[^\W_]以从\w中“排除”(或称为“减去”)_。请注意,.*匹配任何 0+ 字符(换行符除外)。 -
里面有什么?只是字母? ASCII 还是 Unicode?哪个标签有效:JS 还是 PCRE ????
-
是的,它可以工作,但如果我给例如 a_a、team_testing,它就不能工作。在这些情况下,它应该允许下划线。
-
好的,所以规则是:
letters+ (_+letters)*,对吗?现在,是 JS 还是 PCRE?它应该支持Unicode字母吗? -
它的 pcre.. 它也应该允许 unicode
标签: java android regex special-characters pcre