0

私は、すべての英語の文字に対して正常に機能する次の関数を使用して住所を検証しています。ただし、これらの文字は受け入れませんö, Ö, ä, Ä。これらの文字も受け入れるように、次の関数を変更するにはどうすればよいですか?

validateAddress = function (val) {
        var streetRegex = /^[\w+\s]+\d+,\s*[\s\w]+$/;
        if (streetRegex.test(val)) return true;
        else return false;
    }
4

3 に答える 3

2

最新のブラウザーは、正規表現でこれらの文字を処理できるはずです。Chrome または Firefox でこの例を確認してください。

var str = 'öabÖcdäefgÄh';
console.log( str.match(/[öä]/gi) ); //=> ["ö", "Ö", "ä", "Ä"]

ただし、これらの文字をいつでも ascii または unicode に変換して、代わりに使用できます。

function toAscii( str ) {
  return str.replace(/./g, function( char ) {
    return '\\x'+ char.charCodeAt(0).toString(16).toUpperCase();
  });
}

// Use RegExp constructor
var regex = new RegExp('...'+ toAscii('ä') +'...');
于 2012-11-13T06:27:48.637 に答える
1

正規表現を使用できます

/^\D+\d+,\D+$/

ä および ö 文字でも機能します。

于 2012-11-13T06:41:31.040 に答える
0

あなたの問題は、 \w が ö 、 Ö などを含まない文字セットに一致することです。許可された文字の文字範囲を一致させる別の方法を考える必要があります。おそらく、逆の方法で数字以外の文字と一致させる必要があります。

var re = /\D+\d+,\s*[\s\w]+$/

それ以外の場合は、サポートする予定のアルファベット (つまり、異なる言語のアルファベット) に応じて、さまざまな文字範囲を指定する必要があります。正規表現は、英語のアルファベットに基づく ASCII に基づいていると思います。

于 2012-11-13T06:42:09.363 に答える