JavaScript RegExp exec function

JavaScript RegExp exec function

本文关键字:function exec RegExp JavaScript      更新时间:2023-09-26

我有一个输入,有人可能会输入以下模式:

属性:值

该模式可能会演变为具有一定差异的同一模式的多个实例。例如

属性

:值 属性 2:"值 2" 属性 3>"值 3" -属性 4:"值 4"

因此,在上面的示例中,每个模式都可以以文字字符

"-"开头,但不必如此,每个模式都可以包含 :>

属性

:值属性 2

这是我最初使用的 RegExp,我尽力调整它,但最终掉进了几个兔子洞。我试图告诉它匹配直到特定的字符类,但结果很糟糕。

var findFilters = new RegExp(/-?'w+[:<>]"?[A-Za-z'S's]+"?/ig)

另外,这是我之后在我的函数中使用的内容。我正在获取每个匹配并将其作为参数传递给另一个函数。搜索术语表示用户可以键入的输入的值。

var match;
while(match = findFilters.exec(searchTerm)){
    var currentFilter = match[0];
    HSAddFilterParameter(currentFilter);
    updatedTerm = searchTerm.replace(currentFilter,'');
}
你能用

这些字符作为分隔符来分割字符串吗: - : <> ''s ?然后一次从阵列中抓取两个。下面是一个示例:

<!DOCTYPE html>
<html>
<body>
<p id="answerswer"></p>
    <script>
        var foo = 'property:value  property2:"value2"  property3>"value3"  -property4:"value4"';
        arr =  foo.split(/[-:<>'s]+/);
        str = "";
        for (i = 0; i < arr.length; i+=2) { 
            str = str + arr[i] + " : " + arr[i+1] + " <br>";
        }
        document.getElementById("answerswer").innerHTML = str;
    </script>
</body>
</html>

输出:

property : value 
property2 : "value2" 
property3 : "value3" 
property4 : "value4"