Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.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 如果字符串包含字符,则为正则表达式模式_Javascript_Html_Regex_String_Web - Fatal编程技术网

Javascript 如果字符串包含字符,则为正则表达式模式

Javascript 如果字符串包含字符,则为正则表达式模式,javascript,html,regex,string,web,Javascript,Html,Regex,String,Web,抱歉,作为一个绝对的初学者,当涉及到Javascript和正则表达式时 我有一支密码笔: 我想要完成的是验证字符串是否包含一些特殊的UTF-8字符。这就是我使用RegExp的原因。只有当要测试的字符串等于其中一个字符时,我这里的模式才会返回false。但是如果它包含这些字符中的一个,我想返回false 我如何才能做到这一点,我知道这应该很容易,但我无法让它工作 var regEx=new RegExp(“[\u0001-\u00FF]”); log(“这应该是真的:+regEx.test(“T

抱歉,作为一个绝对的初学者,当涉及到Javascript和正则表达式时

我有一支密码笔:

我想要完成的是验证字符串是否包含一些特殊的UTF-8字符。这就是我使用RegExp的原因。只有当要测试的字符串等于其中一个字符时,我这里的模式才会返回false。但是如果它包含这些字符中的一个,我想返回false

我如何才能做到这一点,我知道这应该很容易,但我无法让它工作

var regEx=new RegExp(“[\u0001-\u00FF]”);
log(“这应该是真的:+regEx.test(“Tes”));
log(“这应该是错误的:”+regEx.test(“Tes”)�"));

log(“这返回false,因为字符串等于一个特殊字符:+regEx.test(”�);
为什么不反过来呢

您的测试也可以是整个字符串的
匹配
,或者
测试

var regEx=/[\x00-\x7F]/g;//可以添加到
函数okChar(str){
var res=str.match(regEx);
if(res==null)返回false;
返回res.length==str.length;
}
log(“这应该是真的:+okChar(“Tes”))
log(“这应该是false:+okChar(“Tesú”);

log(“返回false,因为字符串等于一个特殊字符:“+okChar”(ú”);
为什么不反过来呢

您的测试也可以是整个字符串的
匹配
,或者
测试

var regEx=/[\x00-\x7F]/g;//可以添加到
函数okChar(str){
var res=str.match(regEx);
if(res==null)返回false;
返回res.length==str.length;
}
log(“这应该是真的:+okChar(“Tes”))
log(“这应该是false:+okChar(“Tesú”);

log(“返回false,因为字符串等于一个特殊字符:“+okChar”(ú”);
正如@Gabriel所评论的,返回true是因为字符串中至少有一个字符与您的范围匹配

您要做的是检查每个字符是否在范围内

/^[\u0001-\u00FF]+$/
[^\u0001-\u00FF]
或任何字符不在范围内

/^[\u0001-\u00FF]+$/
[^\u0001-\u00FF]

在第二种情况下,当使用特殊字符时为true,当所有字符都安全时为false,因此您可能必须翻转随后进行的检查。

正如@Gabriel所评论的,返回true是因为字符串中至少有一个字符与您的范围匹配

您要做的是检查每个字符是否在范围内

/^[\u0001-\u00FF]+$/
[^\u0001-\u00FF]
或任何字符不在范围内

/^[\u0001-\u00FF]+$/
[^\u0001-\u00FF]

在第二种情况下,当使用特殊字符时为true,当所有字符都安全时为false,因此您可能必须翻转随后进行的检查

只需创建一个
代码段,而不是像我刚才为YouTunks做的那样创建代码笔:)是的,您的正则表达式总是返回true,因为“T”、“e”和“s”在您指定的范围内。将此工具用于正则表达式,效果非常好:)我建议在选中后删除特殊字符只需创建一个
代码段,而不是像我刚才为您所做的那样创建codepen(Hanks:)将是最简单的,是的您的正则表达式总是返回true,因为“T”、“e”和“s”在您指定的范围内。使用此工具进行正则表达式,效果非常好:)我建议在选中pro后删除特殊字符我的问题是,目前只允许特定字符,将来应该很容易添加更多字符。@GOTO0-已修复。我的问题是,目前只允许特定字符,将来应该很容易添加更多字符。@GOTO0-已修复。谢谢。第二个字符非常适合me、 但是我现在有点困惑为什么:D。我注意到我定义的范围完全错误。当你看UTF-8表时,我只是想省去我指定的范围内的字符。通常这是第一个到行的字符,所以是特殊字符。但不知怎的,它是按照我的意愿工作的。当用户输入ä、ö和普通字符串,如“Test”,一切正常,但一旦它们输入问号之类的符号,就会返回一个错误(我使用了!regex.Test()所以我得到了正确的答案。你可以使用unicode字符的参考表来找到你真正需要的字符。现在你要使用前255个字符,包括标准字母表、数字、一些标准ish符号和一些特殊字符:我认为这不是一个非常合理的范围:)作为一个快速参考,基本拉丁语集从\u0020到\u007FThanks。第二个对我来说非常合适。但是我现在有点困惑为什么:D.我注意到我定义的范围完全错误。当你看UTF-8表时,我只是想省去我指定的范围内的字符。通常这会导致e是第一个输入行的,所以是特殊字符。但不知何故,它是按照我的意愿工作的。当用户输入ä、ö和普通字符串(如“Test”)时,一切都正常,但一旦他们输入问号之类的符号,它将返回一个错误(我使用了!regex.Test()所以我得到了正确的答案。你可以使用unicode字符的参考表来找到你真正需要的字符。现在你要使用前255个字符,包括标准字母表、数字、一些标准ish符号和一些特殊字符:我认为这不是一个非常合理的范围:)仅供快速参考,基本拉丁语集从\u0020到\u007F