JavaScript RegExp特殊字符

时间:2013-05-14 06:21:07

标签: javascript regex search replace special-characters

以下方法突出显示大字符串的子字符串。我想要的是支持一个特殊字符*,它代表任何长度的字符串。例如,如果在搜索文本字段中输入*,则应突出显示整个加载的文本文件。当输入变为*a时,应突出显示以“a”结尾的所有单词。 ' a '匹配包含a的所有字词。但是,目前*字符甚至没有被拾取。我该怎么做才能解决这个问题?提前谢谢..

function search() {
    var hid = document.getElementById('hidtxt').value;
    if(hid.length == 0) hid.value=document.getElementById("input").innerHTML;
        var text = document.getElementById("searchText").value;
       if (!text) return;
        var regex =  new RegExp(text, 'gi');
            document.getElementById("input").innerHTML = hid.replace(regex, '<span style="background-color:yellow;">$&</span>');


    }

1 个答案:

答案 0 :(得分:0)

我认为您不能将输入字段直接转换为正则表达式。

星号本身不匹配,因为它必须是.*才能成为有效的正则表达式。

其他情况将变得更加复杂,例如输入字符串blah bla bl bla *837465jfbnrja

.*a会匹配整个字符串,而您可能会追求的是将bla bla*837465jfbnrja作为单独匹配(正如您提到的突出显示字词)

为了完成这项工作,正则表达式需要与非空白字符的所有内容进行非贪婪匹配:

\b(?:[^\s])*?a\b

在这里尝试一些组合,你会明白这个想法:

http://regexpal.com/

您需要提出一组固定的规则,然后您可以准备将​​允许的特殊字符转换为正则表达式,以使其正常工作。