[英]Regex expression retuns unexpected result on special characters
我想检查一个字符串是否包含特殊字符。 我为此使用以下regex
使用regex101在线尝试,效果非常理想。 但是,当我将其包含在代码中时,它将不起作用。 它总是返回false ...为什么呢?
input
字段处理用户输入。
<input
placeholder={placeholder}
type='text'
autoComplete='off'
value={this.state.text}
onChange={event => this.handleOnChange(event)}
/>
每当键入内容时, handleOnChange
处理。
handleOnChange = event => {
const text = event.target.value;
this.setState({
text
});
this.checkForSpecialCharacter(text)
}
checkForSpecialCharacter = text => {
const specialCharacters = new RegExp('/[ !@#$%^&*()_+=`~:;",.\-\[\]\{\}\'\\\|\<\>\/\?]/');
console.log(specialCharacters.test(text)) // <- logs false
this.setState({
foo: {
...this.state.foo,
specialCharacter: specialCharacters.test(text),
}
});
}
如果使用''
创建正则表达式,则不应在开头和结尾添加/
,而应转义反斜杠:
new RegExp('[ !@#$%^&*()_+=`~:;",.\\-\\[\\]\\{\\}\\'\\\\\\|\\<\\>\\/\\?]');
这是很多反斜杠,因此您应该使用//
作为分隔符来编写它:
const specialCharacters = /[ !@#$%^&*()_+=`~:;",.\-\[\]\{\}\'\\\|\<\>\/\?]/;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.