修正:、#を、$、%私は英数字の徴候やこれらを1つだけ含まれている必要があり、文字列の正規表現の書き込みを支援する必要がある正規表現
たとえば:?我々はabx12A位okですFSA?#DSは
OKではありませんが、私は/[-ZA-Z0-9] [#?$%] {0,1}/ようなもので試してみましたが、その作業はありません。 アイデア おかげのような
修正:、#を、$、%私は英数字の徴候やこれらを1つだけ含まれている必要があり、文字列の正規表現の書き込みを支援する必要がある正規表現
たとえば:?我々はabx12A位okですFSA?#DSは
OKではありませんが、私は/[-ZA-Z0-9] [#?$%] {0,1}/ようなもので試してみましたが、その作業はありません。 アイデア おかげのような
何か:
^[a-zA-Z0-9]*[#?$%]?[a-zA-Z0-9]*$
はトリックを行う必要があります(そして、あなたの正規表現エンジンに応じて、あなたはそれらの特殊文字の一つ以上をエスケープする必要があるかもしれません)。
「アルファ」タイプのクラスには基本的に0以上の値があり、「特殊」タイプのクラスには0または1が続き、0以上の「アルファ」が続きます。
それぞれのキャラクタークラスに含まれているものを適切に調整できますが、これは他のものの海の中のものを得る一般的な方法です。あなたは空の文字列を一致させる必要がある場合は
これはちょうどいい作品です。 –
は、あまりにも、あなたはregex demo
詳細を参照してください
^[a-zA-Z0-9]*(?:[#?$%][a-zA-Z0-9]*)?$
を使用する必要があります。
^
- 文字列の先頭[a-zA-Z0-9]*
- ゼロ以上の英数字(?:[#?$%][a-zA-Z0-9]*)?
- の正確に1発生:
[#?$%]
[a-zA-Z0-9]*
からチャー - ゼロ以上の英数字$
- 文字列の末尾注: [A-z]
is a common typoに深刻な問題が発生しました。あなたは空の文字列を許可したくない場合は
、+
で*
を置き換える:特殊文字であることができれば
^[a-zA-Z0-9]+(?:[#?$%][a-zA-Z0-9]+)?$
^ ^
この
const regex = /^[a-zA-z0-9]*[#?$%]?[a-zA-z0-9]*$/
const perfectInputs = [
'abx12A#we',
'a#',
'#a',
'a#a'
]
const failedInputs = [
'fsa?#ds'
]
console.log('=========== test should be success ============')
for (const perfectInput of perfectInputs) {
const result = regex.test(perfectInput)
console.log(`test ${perfectInput}: ${result}`)
console.log()
}
console.log('=========== test should be failed ============')
for (const failedInput of failedInputs) {
const result = regex.test(failedInput)
console.log(`test ${failedInput}: ${result}`)
console.log()
}
'A-z' - >' A-Z'です。 – Qwertiy
を試してみてください文字列の最後に始まります。先読みを使用することができます:
^(?=[^#?$%]*[#?$%]?[^#?$%]*$)[a-zA-Z0-9#?$%]+$
/^(?=[^#?$%]*[#?$%]?[^#?$%]*$)[a-zA-Z0-9#?$%]*$/
\__________^^^^^^^_________/ -------------------- not more than once
\_____________/ ----- other conditions
多分 '/^[-ZA-Z0-9] +(?:[?#$%] [-ZA-Z0-9] +)?$ /'? –