问题是用一些字母验证街道地址

时间:2012-11-13 06:18:07

标签: javascript jquery

我正在使用以下功能验证街道地址,该地址适用于所有英文字母。但它不接受这些字母ö, Ö, ä, Ä。如何更改以下功能以便它也接受这些字母?

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

3 个答案:

答案 0 :(得分:2)

现代浏览器应该能够处理正则表达式中的这些字符。在Chrome或Firefox上查看this example

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('ä') +'...');

答案 1 :(得分:1)

您可以使用正则表达式

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

它也适用于ä和öchars。

答案 2 :(得分:0)

你的问题是\ w匹配一个不包括ö,Ö等字符集。您需要考虑另一种匹配允许字符的字符范围的方法。也许你应该走另一条路并匹配非数字字符:

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

否则,您需要根据您打算支持的字母表(即不同语言的字母表)指定各种字符范围。我认为正则表达式基于ASCII,它基于英文字母。