我正在尝试验证一个文本字段,但下面的正则表达式出现错误。
if (!/^[a-zA-Z0-9\/*+;&%?#@!^()_="-:~`|[]{}s]*$/i.test(e.target.value)) {
this.setState({
newFamilyName: e.target.value,
});
}
我需要在Regex中添加更多字符吗?完成它。
您有一些不必要的转义字符:/
*
{
}
您可以修复它:
if (!/^[a-zA-Z0-9\/*+;&%?#@!^()_="-:~`|[]{}s]*$/i.test(e.target.value)) {
this.setState({
newFamilyName: e.target.value,
});
}
或者禁用规则:
//eslint-disable-next-line
if (!/^[a-zA-Z0-9\/*+;&%?#@!^()_="-:~`|[]{}s]*$/i.test(e.target.value)) {
this.setState({
newFamilyName: e.target.value,
});
}
不必要的转义符意味着正则表达式中的一个字符前面有一个,而实际上并不需要。
我插入了你张贴的代码https://eslint.org/demo得到:
1:20-不必要的转义符:\/。(没有无用的转义符(
1:22-不必要的转义符:\*。(没有无用的转义(
1:47-不必要的转义字符:\{。(没有无用的逃生(
这意味着您在正则表达式中的/
、*
、{
或}
前面不需要。这些字符不需要转义,因为它们出现在
[]
组中。
不幸的是,esint演示网站上的"修复代码"没有起作用,但以下代码是如何修复它的
if (!/^[a-zA-Z0-9\/*+;&%?#@!^()_="-:~`|[]{}s]*$/i.test(e.target.value)) {
this.setState({
newFamilyName: e.target.value,
});
}