正規表現で複数の条件指定をする
正規表現で、半角英数混合(半角英字のみ、半角数字のみは不可)を判定する必要が出た。
調査したり、いろいろ考えた結果、
^(?=.*([0-9]))(?=.*([A-z]))[A-z0-9]*$
という結論に達した。
肯定先読みの結果は先読み前の位置に戻ることを利用して、
- 何かの文字列を読み飛ばして半角数字を見つける
- 肯定先読みなので行頭に戻る
- 何かの文字列を読み飛ばして半角英字を見つける
- 肯定先読みなので行頭に戻る
- 半角英数のみで文字列が構成されているか調べる
でいけた。
(?=.*(条件A))(?=.*(条件B))で同じ部分から複数の条件判定ができる。
否定したいときは(?!.*(条件))かな?試してないけど。
参考: