私の知る限り\d
、たとえば、英語以外の数字と一致するはずです۱۲۳۴۵۶۷۸۹۰
が、JavaScript では正しく機能しません。
この jsFiddle を参照してください: http://jsfiddle.net/xZpam/
これは正常な動作ですか?
私の知る限り\d
、たとえば、英語以外の数字と一致するはずです۱۲۳۴۵۶۷۸۹۰
が、JavaScript では正しく機能しません。
この jsFiddle を参照してください: http://jsfiddle.net/xZpam/
これは正常な動作ですか?
JavaScript はこれをサポートしていないようです (RegExp の言語の他の弱点とともに)。ただし、Unicode アドオンを持つXRegExp\p{}
というライブラリがあり、カテゴリ定義を通じて Unicode サポートを有効にします。たとえば、\p{Nd}
代わりに使用すると、\d
数字が一致します。
<script src="xregexp-all.js" type="text/javascript"></script>
<script type="text/javascript">
var englishDigits = '123123';
var nonEnglishDigits = '۱۲۳۱۲۳';
var digitsPattern = XRegExp('\\p{Nd}+');
if (digitsPattern.test(nonEnglishDigits)) {
alert('Non-english using xregexp');
}
if (digitsPattern.test(englishDigits)) {
alert('English using xregexp');
}
</script>
非 ECMA スクリプト正規表現エンジンと同等のように見える\p{Nd}
代わりに使用されます。指摘してくれたShervinに感謝します。Shervinによるこのフィドルも参照してください。\p{N}
\d
\p{Nd}
JavaScript は Unicode regex マッチングをサポートしていません (これが当てはまる言語は JavaScript だけではありません)。
Mozilla Firefox ( https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/RegExp ) のドキュメントでは、次のことがわかります。
\d
Matches a digit character in the basic Latin alphabet. Equivalent to [0-9].
\d
MDN[0-9]
によると、と同等です。
はい、アスキー数字のみを\d
一致させるのは正常で正しいことです。正式なリファレンスはECMAScript 標準です。特に読みやすいとは言えませんが、15.10.2.12 節 (CharacterClassEscape) では、「0 から 9 までの文字を含む 10 要素の文字セット」を示すと指定されています。0
9
\d
MDN から。正規表現テスト
基本的なラテン アルファベットの数字に一致します。[0-9] に相当します。
Matches a digit character. Equivalent to [0-9].
For example, /\d/ or /[0-9]/ matches '2' in "B2 is the suite number."
MDNから