Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用一些信件确认街道地址_Javascript_Jquery - Fatal编程技术网

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