Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何制作JavaScript';如果至少存在一个禁止字符,则s测试返回false?_Javascript_Regex - Fatal编程技术网

如何制作JavaScript';如果至少存在一个禁止字符,则s测试返回false?

如何制作JavaScript';如果至少存在一个禁止字符,则s测试返回false?,javascript,regex,Javascript,Regex,如果至少存在以下字符之一,我希望测试返回false:^/,:!\u~@#$%^&()+=?()“|!\[#$- 所以我这样做了: const pattern = /[^/,:<>!_~@#$%^&()+=?()“|!\[#$-]/ console.log(pattern.test('fff>')) const pattern=/[^/,:!\@$%^&()+=?()“!\[\\$-]/ console.log(pattern.test('fff>')) 但是,这将返

如果至少存在以下字符之一,我希望测试返回false:
^/,:!\u~@#$%^&()+=?()“|!\[#$-

所以我这样做了:

const pattern = /[^/,:<>!_~@#$%^&()+=?()“|!\[#$-]/
console.log(pattern.test('fff>'))
const pattern=/[^/,:!\@$%^&()+=?()“!\[\\$-]/
console.log(pattern.test('fff>'))
但是,这将返回
true


它应该返回false,因为至少有一个禁止字符:
您应该指定以
^
开头,以
$
结尾,并向类添加加号
+

否则,

它匹配
fff
,因此返回true

如果你严格的开始和结束,那么它将执行一个完整的测试

const pattern=/^[^/,:!\@$%^&()+=?()“!\[\\$-]+$/;
console.log(pattern.test('fff>');//false

console.log(pattern.test('fff'));//true
如注释中所述,您可能希望使用负前瞻:

const pattern=/(?!.[/^,:!\@$%^&()+=?()“!\[\$-])+/

console.log(pattern.test('fff>'))
为什么要检查带有否定字符类的禁止字符

使用常规的字符类,事情就会变得简单明了

const forbiddenChars = /[/,:<>!_~@#$%^&()+=?()“|!\[#$-]/;
var success = !inputString.test(forbiddenChars);
常量禁止字符=/[/,:!\@$%^&()+=?()“!\[\$-];
var success=!inputString.test(禁止字符);

正则表达式模式似乎包含许多未转义的特殊字符和重复字符。假设其目的是检测所列特殊字符的存在,则应达到预期结果:

const pattern = /[\\\/,:<>!_~@#$%\^&()\+=\?"\|\[\]-]/;
console.log( ! pattern.test('fff>');
const pattern=/[\\\/,:!\@$%\^&(()\+=\?“\\\[\]-]/;
console.log(!pattern.test('fff>');

我通常进行测试,检查是否存在特殊字符,然后将其取反。因此,如果存在特殊字符,则应返回false。 您需要转义以下字符: 打开/关闭方括号“[”和“]”;反斜杠“\”插入符号“^”;美元符号“$”;句点“;”;竖条或管道符号“|”;问号“?”;星号“*”;加号/减号“+”/”-“打开/关闭花括号“{”和“}”;以及打开/关闭圆括号“(“和”)”

const pattern=/[/,:!\uz~@\\$%\^&(\)\+=\?“\\\\\\!\\[\\\\$\-\]]/
console.log(!pattern.test('fff>'))

尝试此模式。记住模式是查找特殊字符不要忘记否定结果。不幸的是,我无法测试atm。我使用移动设备。如果我进行测试,我将稍后进行编辑

注意:不确定是否转义了所有元字符

注2:不确定是否不希望接受“*”,如果不是这样,请将“*”添加到正则表达式中。将其添加到中间的某个位置

注3:您的表达式测试中的双引号似乎与使用我的键盘生成的双引号不同。通常,当我使用文字处理器时,我会像您一样得到一个倾斜的双引号。如果您想在此处包含正常引号,它是(“).如果你的意思是倾斜的报价,你也需要接近的倾斜报价,不幸的是,我无法复制它。 注3-更新了:已编辑正则表达式以测试正常双引号

编辑-我已经测试过,它似乎可以工作。
我还没有试过所有特殊字符。只有几个。看一看

使用负前瞻:
(^?!.*[AlloyourCharacters here])
它应该返回true,因为部分模式匹配。“如果匹配,则返回true。”“-相当确定的是,
^
字符本身也应该在禁止字符列表中。因此,您需要将其添加到否定类中。但如果不是这样,则应该可以这样做。”。