我正在使用以下功能验证街道地址,该地址适用于所有英文字母。但它不接受这些字母ö, Ö, ä, Ä
。如何更改以下功能以便它也接受这些字母?
validateAddress = function (val) {
var streetRegex = /^[\w+\s]+\d+,\s*[\s\w]+$/;
if (streetRegex.test(val)) return true;
else return false;
}
答案 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,它基于英文字母。