-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<
  • Another.Test.12345そのため、基本的には機能しますが、またはのような単語とは一致しませんSpecial Char Testó

ółążźćęą単語の文字(やなどの特殊な文字を含むäöüß)、数字、ドット、スペースのみに一致させたいです。

私はたくさん検索してきましたが、上記の例でこれよりも優れた正規表現は見つかりませんでした。

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 に答える