如何使用正则表达式在javascript中链接unicode数字

如何使用正则表达式在javascript中链接unicode数字,javascript,regex,unicode,Javascript,Regex,Unicode,如何更改下面的正则表达式以同时选择unicode数字?当前仅选择ASCII数字 函数编号Y(文本){ var urlRegex=/[+0-9]+(?:\[0-9]*)?[0-9]{5,}/g; 返回text.replace(urlRegex,函数(url){ 返回“”; }); } 感谢@Alexey的评论,我更新了我的答案: 在您的评论“123٧٨٩”中,ASE是阿拉伯数字 ARABIC-INDIC DIGIT---> \u0660-\u0669 EXTENDED ARABIC-I

如何更改下面的正则表达式以同时选择unicode数字?当前仅选择ASCII数字

函数编号Y(文本){
var urlRegex=/[+0-9]+(?:\[0-9]*)?[0-9]{5,}/g;
返回text.replace(urlRegex,函数(url){
返回“”;
});
}

感谢@Alexey的评论,我更新了我的答案:

在您的评论“123٧٨٩”中,ASE是阿拉伯数字

 ARABIC-INDIC DIGIT---> \u0660-\u0669
 EXTENDED ARABIC-INDIC DIGIT---> \u06F0-\u06F9
试试这个派特伦

[+0-9\u0660-\u0669\u06F0-\u06F9]+(?:\.[0-9\u0660-\u0669\u06F0-\u06F9]*)?[0-9\u0660-\u0669\u06F0-\u06F9]{5,}

如果您想要任何unicode符号,那么您可以在这里搜索该符号,在
Javascript
中,您必须为每个区域性包含unicode数字范围

您可以使用
\uxxx
指定范围,其中x为十六进制

因此,您可以匹配特定文化的数字,如

[\u0966-\u096F]+//matches `Devangiri` digits
[\u0E50-\u0E59]+//matches `Thai` digits

[\d\u0966-\u096F\u0E50-\u0E59]+//matches `Thai`,`Devangiri`,`ascii` digits
您可以找到所有区域性的unicode编号范围


相反,您可以使用您可以使用的库

\p{N}
以匹配任何Unicode数字


如果您对涵盖所有文化的完整范围感兴趣

0-6-6-6-6-0-0-0 0-0 0-5-0-0-0 0-E5-0-0 0-0 ED0-0 0-ED0-0 0 0-0 0-0 0-0 0-0-0 0-0-0-0-0-0-0-0 0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-ED0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0 0 1BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293248-324F3251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A0-A9D9AA50-AA59ABF0-ABF9FF10-FF19


请参阅

您的问题不清楚,但如果您希望包括其他Unicode数字形式,如Unicode全宽字符,您可以添加如下明确的Unicode范围:

// Adds the full-width unicode range FF10-FF19 (    0-9)
var urlRegex = /[+0-9\uFF10-\uFF19]+(?:\.[0-9\uFF10-\uFF19]*)?[0-9\uFF10-\uFF19]{5,}/g;
你可以简单地通过钉上它们来增加额外的范围。我很想修改您的代码,这样,如果您有多个范围,就可以减少重复:

var digit = "0-9\uFF10-\uFF19";
var urlRegex = new RegExp("[+"+digit+"]+(?:\\.["+digit+"]*)?["+digit+"]{5,}", "g");
一份清单。这包括其他语言的其他形式


请注意,只有2字节的Unicode值可用(最多为
\uFFFF
)。在该页面上,它们包括一些扩展形式(例如数学粗体)这超出了JavaScript支持的2字节Unicode范围。

你能举一些例子来测试你想要的输出是什么吗?是的JavaScript输入可以是123£٨٩输出应该是相同的,或者你想要匹配来自任何区域性或特定区域性的数字这里-如果我输入的
Regex
而不是<代码> ReXEP 引起了早期错误。JavaScript可以处理BMP范围之外的字符,但是当使用ReGEX时,它会变得有点丑陋,因为在JS字符串中必须考虑1个字符为2个字符。(我在这里的观点是,可以使用正则表达式来处理BMP之外的字符)。当我添加这些unicode数字时,上面的正则表达式不起作用:当然它不起作用。这个答案是指导你如何自己构造正则表达式,而不是用勺子向你提供解决方案。你似乎在尝试匹配电话号码和Unicode转义码,对吗?但问题的作者实际上要求的是与他相同的模式,但这是文化独立的。这不仅包括拉丁数字字符,还包括德万吉里语和泰语。