3

以下の正規表現を変更してユニコード番号も選択するにはどうすればよいですか? 現在、ASCII 番号のみが選択されています。

function numberfy(text) {
    var urlRegex = /[+0-9]+(?:\.[0-9]*)?[0-9]{5,}/g;

    return text.replace(urlRegex, function(url) {
        return '<font color="blue"><u><a href="tel:' + url + '">' + url + '</a></u></font>';
    });
}

ありがとう

4

3 に答える 3

1

ではJavascript、すべてのカルチャに Unicode 番号の範囲を含める必要があります。

\uxxxxx は 16 進数を使用して範囲を指定できます。

したがって、次のような特定の文化の数字を一致させることができます

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

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

ここですべての文化のユニコード番号の範囲を見つけることができます


代わりに、使用できるxregexpライブラリを使用できます

\p{N}任意の Unicode 番号に一致する


すべての文化をカバーする完全な範囲に興味がある場合。

0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0B72-0B770BE6-0BF20C66-0C6F0C78-0C7E0CE6-​​0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0- 17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293248-324F3251-325F3280-328932B1- 32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19

ここを参照

于 2013-04-17T03:34:09.710 に答える
1

あなたの質問は不明確ですが、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");

別の Unicode 数値形式のリストは、ここにあります。これには、他の言語の他の形式が含まれます。

2 バイトの Unicode 値のみが機能することに注意してください (最大\uFFFF)。そのページには、JavaScript でサポートされている 2 バイトの Unicode 範囲外の拡張フォーム (Mathematical Bold など) が含まれています。

于 2013-04-17T03:40:31.433 に答える
-1

コメント@Alexeyから、回答を更新しました:

あなたのコメントで "123٧٨٩" これらはアラビア数字です

 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,}

ユニコード記号が必要な場合は、ここでその記号を検索できますhttp://www.ltg.ed.ac.uk/~richard/unicode-sample-3-2.html

于 2013-04-17T03:29:48.257 に答える