javascriptコードを使用して、テキスト内のURLを検索しようとしています。問題は、私が使用している正規表現は\ wを使用してURL内の文字と数字を照合しますが、英語以外の文字(私の場合はヘブライ文字)とは一致しません。
では、\ wの代わりに何を使用して、すべての言語のすべての文字に一致させることができますか?
javascriptコードを使用して、テキスト内のURLを検索しようとしています。問題は、私が使用している正規表現は\ wを使用してURL内の文字と数字を照合しますが、英語以外の文字(私の場合はヘブライ文字)とは一致しません。
では、\ wの代わりに何を使用して、すべての言語のすべての文字に一致させることができますか?
\w
ASCII文字48-57( '0'-'9')、67-90('A'-'Z')、および97-122('a'-'z')にのみ一致するため。ヘブライ文字およびその他の特殊な外国語文字(たとえば、umlaut-oまたはtilde-n)は、その範囲外です。
外国語の文字(非常に多く、さまざまなASCII範囲にあります)を照合する代わりに、スペース、引用符、その他の句読点など、単語を表す文字を探す方がよい場合があります。
一般に JavaScript として知られるプログラミング言語を定義する ECMA 262 v3 標準では、\w
[a-zA-Z0-9_] と同等である\d
必要があり、[0-9] と同等である必要があると規定しています。\s
一方、標準によれば、ASCII と Unicode の両方の空白に一致します。
JavaScript は\p
Unicode のものに一致する構文もサポートしていないため、これを行う良い方法はありません。すべてのヘブライ文字を次のように一致させることができます。
[\u0590-\u05FF]
これは、ヘブライ語ブロックの任意のコード ポイントに単純に一致します。
任意の ASCII 単語文字または任意のヘブライ文字を次のものと一致させることができます。
[\w\u0590-\u05FF]
この正規表現を探していると思います:
^[אבגדהוזחטיכלמנסעפצקרשתץףןםa-zA-z0-9\s\.\-_\\\/]+$
まだ言及されていないXRegExpを見つけたばかりで、非常に感銘を受けました。これは代替の正規表現の実装であり、Unicode プラグインがあり、MIT ライセンスの下でライセンスされています。
Web サイトによると、Unicode 文字を一致させるには、次のようなコードを使用します。
var unicodeWord = XRegExp("^\\p{L}+$");
unicodeWord.test("Русский"); // true
unicodeWord.test("日本語"); // true
unicodeWord.test("العربية"); // true
http://www.regular-expressions.info/refunicode.htmlをご覧ください。
Unicodeに相当する\wはないようですが、単一のUnicode文字に一致させることができるため、作成できます。
JavaScriptとUnicodeについてのこのSOの質問をチェックしてください。Jan Goyvaertsの回答は、あなたにいくつかの希望を与えているようです。
編集:しかし、すべてのブラウザが\p...をサポートしていないようです。その質問には有用な情報が含まれている必要があります。
URI (URL のスーパーセットとして) は、US-ASCII 文字のみを許可するように W3C によって指定されていることに注意してください。通常、他のすべての文字はパーセント表記で表す必要があります。
ローカルまたは地域のコンテキストでは、技術の向上により、ユーザーはより広い範囲の文字を使用できるようになることで利益を得る可能性があります。そのような使用は、この仕様では定義されていません。パーセントでエンコードされたオクテット (セクション 2.1) は、URI が参照されているスキームまたはプロトコル要素によってこの表現が許可されている場合、US-ASCII コード化文字セットの範囲外の文字を表すために URI 内で使用できます。このような定義では、URI に対してパーセントでエンコードされる前に、これらの文字をオクテットにマップするために使用される文字エンコードを指定する必要があります。// URI: 一般的な構文
ブラウザーで非 ASCII 文字を含む URL を開くと、一般にこれが発生します。これらは %AB 表記に変換され、これがUS-ASCII になります。
マテリアルの作成方法に影響を与えることができる場合、最良のオプションは、作成中に URL に urlencode() タイプの関数を適用することです。
おそらく\S(非空白)。
英語以外の文字を含む URL を生成している場合は、再検討することをお勧めします。
私が W3C を正しく解釈している場合、URL にはラテン アルファベット内の単語文字しか含まれていない可能性があります。