IIJmio(みおふぉん)

\d \D は正規表現(RegExp)で使わない方が良い

JavaScriptの正規表現では、数値文字を意味する \d は、 ブラウザによって解釈が違ってきます。従ってその逆を意味する \D も意味が違ってきます。

通常 \d 半角数字を意味し、 \D 半角数字以外を意味するとされています。
NetscpaeやFireFoxでは全角の数字も \d に含まれます。

自分のページ内の文字やプログラムを扱うのであれば問題は出難いですが、 ユーザーからの入力を処理する場合には要注意ですね。
どちらが便利か?といわれるとどっちかに統一してくれるのが一番便利です(^^ゞ

従って日頃から
\d [0-9] \D [^0-9] を使うように癖をつけておくほうが良いですね。

サンプル


var str = '5678'; //全角数字の文字列

if( str.match(/\d/) ) alert(' match!!! ')

NetscpaeやFireFoxでは[0-90-9]
IEやOperaでは[0-9]
の意味になるので、NetscapeやFireFoxの場合のみアラートが出ます。


var str = '5678'; //半角数字の文字列

if( str.match(/[0-9]/) ) alert(' match!!! ')

半角数値を探したいならこれでOKです。


var str = '5678'; //全角数字の文字列

if( str.match(/[0-90-9]/) ) alert(' match!!! ')

半角・全角数値を探したいならこれでOKす。

\D は [^0-9] [^0-9] [^0-90-9]


ナンバリング補助を作っててNN系でNaNが出てて結局これが原因でした。
その他の『\○』は調べていませんが、他にもありえます。
今現在無いとしても将来あるかもしれませんし、過去のNN系での日本語の文字数の数え方なども違います。 サーバーサイドスクリプトであればサーバーに合わせるだけで対応可能ですが、 JavaScriptはビジターのブラウザで動きます。 ブラウザの種類もバージョンも多岐にわたりますし、今後もどんどん増えていきます。 よって『最初からマッチングには省略系は使わない』を前提にしてしまった方が良いでしょうね。


専用ページから申し込むと
So-netより高い3万円CB

案ずるより産むが易し
使ってみれば疑問も解決

XREA+ (plus) 206円/月
( お試し7日間 )

CORE SERVER 428円/月
( お試し15日間 )

ロリポップ 270円/月
( お試し期間10日間 )

ヘテムル 1620円/月
( お試し期間15日間 )

さくら 129円/月
( お試し期間2週間 )

無駄な高額ドメイン管理料金払ってませんか?

バリュードメイン
ムームードメイン