d只匹配0-9位数?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了 d只匹配0-9位数?相关的知识,希望对你有一定的参考价值。
JavaScript不支持Unicode正则表达式匹配(并且它远非唯一的语言,这是真的)。
http://www.regular-expressions.info/unicode.html
似乎JavaScript不支持这一点(以及RegExp中语言的其他弱点)。然而,有一个名为XRegExp的库,它有一个unicode插件,通过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>
EDIT:
使用p{Nd}
而不是p{N}
,因为看起来d
相当于非ECMA Script Regex引擎中的p{Nd}
。谢谢你去Shervin指出来。另见fiddle的Shervin。
在Mozilla Firefox(qazxsw点)的文档中,您会发现:
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
相当于[0-9]
。
来自MDN。 MDN
匹配基本拉丁字母表中的数字字符。相当于[0-9]。
RegEx Test
来自Matches a digit character. Equivalent to [0-9].
For example, /d/ or /[0-9]/ matches '2' in "B2 is the suite number."
是的,MDN仅将Ascii数字d
与0
匹配是正常和正确的。权威参考是9
。读取并不是特别容易,但是第15.10.2.12节(CharacterClassEscape)指定ECMAScript standard表示“包含字符0到9的十个元素字符集”。
是的,使用d
与JavaScript中的非英语数字不匹配,但是像JavaScript的其他奇怪部分一样,你仍然可以在JavaScript中检查非英语数字(例如波斯语数字),使用类似下面的代码:
d
以上是关于 d只匹配0-9位数?的主要内容,如果未能解决你的问题,请参考以下文章