Javascript 用一些信件确认街道地址
我正在使用以下功能验证街道地址,该功能适用于所有英文字母。但它不接受这些字母Javascript 用一些信件确认街道地址,javascript,jquery,Javascript,Jquery,我正在使用以下功能验证街道地址,该功能适用于所有英文字母。但它不接受这些字母ö,Ö,ä,Ä。如何更改以下函数,使其也接受这些字母 validateAddress = function (val) { var streetRegex = /^[\w+\s]+\d+,\s*[\s\w]+$/; if (streetRegex.test(val)) return true; else return false; } 现代浏览器应该能够在正则表达
ö,Ö,ä,Ä
。如何更改以下函数,使其也接受这些字母
validateAddress = function (val) {
var streetRegex = /^[\w+\s]+\d+,\s*[\s\w]+$/;
if (streetRegex.test(val)) return true;
else return false;
}
现代浏览器应该能够在正则表达式中处理这些字符。在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('ä') +'...');
现代浏览器应该能够在正则表达式中处理这些字符。在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('ä') +'...');
你可以使用正则表达式
/^\D+\d+,\D+$/
它也适用于äandöchars。您可以使用regex
/^\D+\d+,\D+$/
它也适用于ä和öchars。您的问题是\w匹配的字符集不包含ö、Ö等。您需要考虑另一种方法来匹配允许字符的字符范围。也许您应该换一种方式匹配非数字字符:
var re = /\D+\d+,\s*[\s\w]+$/
否则,您需要根据要支持的字母表(即不同语言的字母表)指定不同的字符范围。我认为正则表达式是基于ASCII的,ASCII是基于英文字母表的。您的问题是\w匹配的字符集不包括ö、Ö等。您需要考虑另一种方法来匹配允许字符的字符范围。也许您应该换一种方式匹配非数字字符:
var re = /\D+\d+,\s*[\s\w]+$/
否则,您需要根据要支持的字母表(即不同语言的字母表)指定不同的字符范围。我认为正则表达式是基于ASCII的,ASCII是基于英语字母表的。您想匹配什么模式?街道地址有大量的格式,通用解析器不是一项简单的任务,可能不适合单个正则表达式。这种模式
street näme 18,city
您的问题是\w
匹配不包含ö、Ö等的a。顺便问一下,如果streetname是street 32 b 2,城市你想匹配什么模式?街道地址有大量的格式,通用解析器不是一项简单的任务,可能不适合单个正则表达式。这种模式street näme 18,city
您的问题是\w
匹配不包含ö、Ö等的a。顺便问一下,如果streetname是street 32 b 2,CityI有一个现代的chrome,但是我上面的功能对我来说不起作用,而你的例子却起作用。当然它不起作用,\w
不匹配特殊字符。您需要像我的示例中那样,将想要的字符添加到正则表达式中。如果您需要验证更多的字符,那么您可以通过查看ascii表并计算出第一个字符和最后一个字符来创建一个范围,例如[À-ÿ]
您的意思是我需要添加字母而不是\w
?而不是添加[\wöÖÖÄ]
我有一个现代的chrome浏览器,但是我上面的功能对我来说不起作用,而你的例子却起作用。当然不起作用,\w
与特殊字符不匹配。您需要像我的示例中那样,将想要的字符添加到正则表达式中。如果您需要验证更多,那么您可以通过查看ascii表并计算出第一个字符和最后一个字符来创建一个范围,例如[À-ÿ]
您的意思是我需要添加字母而不是\w
?而不是在您说之前编辑的[\wöÖÖÖÄ]
=在你说之前就已经决定了=D