繁体   English   中英

正则表达式对特殊字符恢复意外结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM