XSL ファイル内の同じ文字/数字を 2 つまで正規表現で処理する必要があります。
- 立つ瀬がない
- 特殊文字をサポートしていません
- サポート (az、AZ、0-9)
- az のいずれかが必要
- 0 ~ 9 のいずれかが必要
- 同じ文字/数字は 2 つまで (つまり、
BBB
失敗し、BB
受け入れられます)
私がこれまでに持っているもの
(?:[^a-zA-Z0-9]{1,2})
XSL ファイル内の同じ文字/数字を 2 つまで正規表現で処理する必要があります。
BBB
失敗し、BB
受け入れられます)私がこれまでに持っているもの
(?:[^a-zA-Z0-9]{1,2})
この正規表現はそれを行います:
^(?!.*([A-Za-z0-9])\1{2})(?=.*[a-z])(?=.*\d)[A-Za-z0-9]+$
内訳は次のとおりです。
(?!.*([A-Za-z0-9])\1{2})
文字が連続して 2 回以上繰り返されないようにします。
(?=.*[a-z])
少なくとも 1 つの小文字が必要です
(?=.*\d)
少なくとも 1 桁が必要です
[A-Za-z0-9]+
文字と数字のみを許可します
編集:.*
否定的な先読みから
余分なものを削除しました
これはあなたのために働きますか?
/(\b(?:([A-Za-z0-9])(?!\2{2}))+\b)/
やってみて:
var regex = new RegExp(/(\b(?:([A-Za-z0-9])(?!\2{2}))+\b)/)
var tests = ['A1D3E', 'AAAA', 'AABAA', 'abccddeeff', 'abbbc', '1234']
for(test in tests) {
console.log(tests[test] + ' - ' + Boolean(tests[test].match(regex)))
}
出力します:
A1D3E - true
AAAA - false
AABAA - true
abccddeeff - true
abbbc - false
1234 - true
明確化に応じて、単一の正規表現は厳密には必要ないようです。その場合、いくつかの正規表現または関数を使用することをお勧めします。私の推測では、パフォーマンスは要件ではありません。通常、これらの種類のチェックはユーザー入力に応じて行われるからです。ユーザー入力の検証には 100 ミリ秒かかる場合がありますが、それでも瞬時に表示され、100 ミリ秒で多くのコードを実行できます。
たとえば、私は個人的に、個別のテストで各条件のチェックを行います. まず、スペースを確認します。次に、少なくとも 1 つの文字を確認します。次に、少なくとも 1 つの番号を確認します。最後に、3 つ以上の繰り返し文字のスパンを探します。
コードははるかに理解しやすくなり、後でルールを変更するのもはるかに簡単になります (これは経験上、ほぼ確実に起こります)。
例えば:
function do_validation(string) {
return (has_no_space(string) &&
has_no_special_char(string) &&
has_alpha(string) &&
has_digit(string) &&
! (has_repeating(string)))
個人的には、上記は 1 つの複雑な正規表現よりも桁違いに読みやすいと考えています。さらに、ルールを追加または削除しても、複雑な正規表現を再実装する必要はありません (したがって、すべての可能な組み合わせを再テストする必要があります)。