我的正则表达式有问题.我确定有些东西没有正确逃脱.
function regex(str) {
str = str.replace(/(~|`|!|@|#|$|%|^|&|*|\(|\)|{|}|\[|\]|;|:|\"|'|<|,|\.|>|\?|\/|\\|\||-|_|+|=)/g,"")
document.getElementById("innerhtml").innerHTML = str;
}Run Code Online (Sandbox Code Playgroud)
<div id="innerhtml"></div>
<p><input type="button" value="Click Me" onclick="regex('test @ . / | ) this');">Run Code Online (Sandbox Code Playgroud)
*并+需要逃脱.
function regex (str) {
return str.replace(/(~|`|!|@|#|$|%|^|&|\*|\(|\)|{|}|\[|\]|;|:|\"|'|<|,|\.|>|\?|\/|\\|\||-|_|\+|=)/g,"")
}
var testStr = 'test @ . / | ) this'
document.write('<strong>before: </strong>' + testStr)
document.write('<br><strong>after: </strong>' + regex(testStr))Run Code Online (Sandbox Code Playgroud)
提议的重复项问题的可接受答案未涵盖ASCII范围内的所有标点符号。(不过,对接受的答案的评论确实如此)。
编写此正则表达式的更好方法是使用将字符放入字符类中。
/[~`!@#$%^&*(){}\[\];:"'<,.>?\/\\|_+=-]/g
Run Code Online (Sandbox Code Playgroud)
在字符类中,要匹配文字字符:
^ 除非在字符类的开头,否则不需要转义。-应该放在字符类的开头(在^否定的字符类中的后面)或字符类的末尾。]必须转义以指定为文字字符。[不需要转义(但是我还是习惯了转义,因为某些语言需要[在字符类中转义)。$,*,+,?,(,),{,},|,.失去字符类中仍然具有特殊意义。在RegExp文字中,/必须进行转义。
在RegExp中,由于\是转义字符,所以如果要指定文字\,则需要对其进行转义\\。
| 归档时间: |
|
| 查看次数: |
7690 次 |
| 最近记录: |