我需要一个正则表达式来匹配帐户登录。
我想要匹配的符号:
Test testtest Special Char Testó Special Char Test Test Test Hai hai Test-ó Test.ó Testó Another Test 12345 Another.Test.12345
我找到的最接近的正则表达式是:^(?=[^ ])[a-zA-Z0-9 +&-]+(?<=\S)$
。但它仍然不符合上述所有例子。
以下是它不应匹配的所有符号:
Test?
Test$
Test= (and all special characters like those @#$%^&*=).
Test[]
Test>
Test<
Another.Test.12345
或Special Char Testó
这个词不匹配。我希望它只匹配单词字符(包括ółążźćęą
和äöüß
等特殊字符),数字,点和空格。
我一直在搜索,但在上面给出的例子中找不到比这个更好的正则表达式。
答案 0 :(得分:1)
如果您只想匹配问题中列出的字符,那么您应该使用此正则表达式:
/(?:\A|(?<=[^a-zA-Z0-9\+\&\-ółążźćęąäöüß\.\s]))([a-zA-Z0-9\+\&\-ółążźćęąäöüß\.\s]+)(?:(?=[^a-zA-Z0-9\+\&\-ółążźćęąäöüß\.\s])|\z)/
然而,由于这个问题对我(以及很多其他用户)都不清楚,我建议你使用一个匹配所有“字母类”单码unicode字符和一些特殊字符的正则表达式字符。这样的正则表达式将是:
/(?:\A|(?<=[^\p{L}\+\-\&\.\s]))([\p{L}\+\-\&\.\s]+)(?:(?=[^\p{L}\+\-\&\.\s])|\z)/
答案 1 :(得分:0)
<强> [注] 强> 在发布之前我没有看过您的编辑。
我假设您正在使用PHP。这对我有用:
$a = 'Test
testtest
Special Char TestóááÓ
Special Char Testß
Test Test
Hai hai
Test-ó
Test.ó
Testó
Another Test 12345
Another.Test.12345';
preg_match_all('/^(?=[^ ])[\w \.-\p{L}]+$/m', $a, $ms);
var_dump($ms);
匹配所有线路。 \p{L}
将匹配http://php.net/manual/en/regexp.reference.unicode.php