我要检查字符串是否包含特殊字符。
我为此使用了以下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),
}
});
}
答案 0 :(得分:2)
如果您使用''
创建正则表达式,则不应在开头和结尾添加/
,而应避免使用反斜杠:
new RegExp('[ !@#$%^&*()_+=`~:;",.\\-\\[\\]\\{\\}\\'\\\\\\|\\<\\>\\/\\?]');
有很多反斜杠,因此您应该使用//
作为分隔符来编写它:
const specialCharacters = /[ !@#$%^&*()_+=`~:;",.\-\[\]\{\}\'\\\|\<\>\/\?]/;