Regex.exec仅显示首次出现

时间:2018-11-30 00:04:56

标签: javascript node.js regex

我使用以下正则表达式:

\b([a-zäöüßA-ZÄÖÜ][^\s]*)

对于字符串“ ChorinerStraße12”,其匹配的“ ChorinerStraße”,如果我在regex101上进行了测试。这正是我所需要的。 但是如果我在

的代码中使用它
regex.exec("Choriner Straße 12")

代码:

const street_regex = new RegExp('\\b([a-zäöüßA-ZÄÖÜ][^\\s]*)/g');

它只返回“ Choriner”。我不知道怎么了...你能帮我吗?

4 个答案:

答案 0 :(得分:1)

请参见the MDN documentation for the RegExp function

new RegExp(pattern[, flags])

标记需要作为第二个参数传递,表达式的末尾也不能与/FLAGS传递。

const street_regex = new RegExp('\\b([a-zäöüßA-ZÄÖÜ][^\\s]*)', 'g');

…,但是首先您不应该使用RegExp构造函数。字符串转义使其难以阅读,并且比简单的regexp文字没有任何好处。

const street_regex = /\b([a-zäöüßA-ZÄÖÜ][^\s]*)/g;

答案 1 :(得分:0)

以下是使用/regex/语法的有效示例:

var regex = /\b([a-zäöüßA-ZÄÖÜ][^\s]*)/g

while((match = regex.exec("Choriner Straße 12")) !== null) {
    console.log('The full match object:', match);
    console.log('The actual result:', match[0]);
}

答案 2 :(得分:0)

好吧,如果我正确地回答了您的问题,那么应该可以。

const getAddressWithoutNumber = fullAddress => {
  const result = /(?![\s\d].+).+?(\S+).+(?=\s\d.+)/igm.exec(fullAddress);
  return result && result[0] || null;
}

console.log(getAddressWithoutNumber('123 Choriner Straße 12')); // outputs "Choriner Straße"

答案 3 :(得分:0)

好吧,我发现,不是您的正则表达式不起作用,而是我的代码。我找到了正确的正则表达式,但还有一个问题。这是代码:

const regex = /\b([a-zäöüßA-ZÄÖÜ][^\s]+)/g;
const str = `Choriner Straße 12`;
let m;

while ((m = regex.exec(str)) !== null) {
    // This is necessary to avoid infinite loops with zero-width matches
    if (m.index === regex.lastIndex) {
        regex.lastIndex++;
    }
    
    // The result can be accessed through the `m`-variable.
    for (var i = 0; i < m.length; i++) {
      console.log(i,m)
    }
}

这是我的控制台上的结果(for循环):

  

[“ Choriner”,“ Choriner”,索引:0,输入:“ ChorinerStraße12”,组:未定义]   Runner-4.1.7.min.js:1 1(2)[[“ Choriner”,“ Choriner”,索引:0,输入:“ ChorinerStraße12”,组:未定义]   Runner-4.1.7.min.js:1 0(2)[[“Straße”,“Straße”,索引:9,输入:“ ChorinerStraße12”,组:未定义]   runner-4.1.7.min.js:1 1(2)[[“Straße”,“Straße”,索引:9,输入:“ ChorinerStraße12”,组:未定义]

如您所见,正则表达式与我想要的完全匹配,但是我需要将匹配项作为单词...