-3

我需要一个正则表达式来匹配帐户登录。

我想匹配的符号:

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)$. 但它仍然与上述所有示例都不匹配。

实时预览:http ://regexr.com?30ncg

以下是它不应该匹配的所有符号:

Test?
Test$
Test= (and all special characters like those @#$%^&*=).
Test[]
Test>
Test<
  • 所以它基本上可以找到,但它不匹配单词 like Another.Test.12345or Special Char Testó

我希望它只匹配一个单词字符(包括特殊字符,如ółążźćęąand äöüß)、数字、点和空格。

我一直在搜索很多,但在上面给出的示例中没有找到比这个更好的正则表达式。

4

2 回答 2

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)/
于 2012-04-20T16:30:34.570 回答
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);

它匹配所有行。将匹配在http://php.net/manual/en/regexp.reference.unicode.php\p{L}上读取的 unicode 字符

于 2012-04-20T16:41:47.913 回答