Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.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_Asp.net_Html_Regex_Validation - Fatal编程技术网

Javascript 关于正则表达式中单引号和双引号的问题?

Javascript 关于正则表达式中单引号和双引号的问题?,javascript,asp.net,html,regex,validation,Javascript,Asp.net,Html,Regex,Validation,我有一个javascript示例,其中包含一个允许单引号的正则表达式,但由于使用单引号,因此存在以下问题: <script language="javascript"> function checkname() { var name = document.getElementById('Name'); var filter = ^[a-zA-Z'.\s]{1,50}; if (!filter.test(name.value))

我有一个javascript示例,其中包含一个允许单引号的正则表达式,但由于使用单引号,因此存在以下问题:

<script language="javascript">
    function checkname() {
        var name = document.getElementById('Name');
        var filter = ^[a-zA-Z'.\s]{1,50};
        if (!filter.test(name.value)) {
            alert('name is not valid');
            name.focus;
            return false;
        }
        return true;
    }
</script>

但是在
JavaScript
中,我不能用双引号将正则表达式括起来。所以一定有办法解决它。

我想你需要的是

var filter = /^[\w'".\s]{1,50}$/
演示:

您可以使用
\w
表示单词字符,如
a-zA-Z0-9
^
标记行的开始和
$
标记行的结束。

您可以尝试此方法

var filter = /[a-zA-Z\"']{1,50}/;

您可以使用十六进制或反斜杠尝试下面的过滤器\

var filter = /[a-zA-Z\x22\x27]{1,50}/;

在十六进制中,
\x22
\x27


这应该有效。

特殊字符在
[]中没有特殊含义
不需要转义,加上转义引号是无效的,如果我有输入示例
100name
正则表达式在脚本抛出警报时工作。但是使用
name100
正则表达式不工作。另外,如果不使用前斜杠将其包装,它根本不工作。无论如何,谢谢你ArthasNed_StarkGimli。没问题莱姆,不管怎样,我同意阿伦的答案,因为它是正确的one@elclanrs感谢您的评论,但我恐怕不确定您的意思是什么是无效的JS。感谢Arun提供有关
\w
^
$
的信息,但我担心解决方案不起作用。是的,脚本根本不会引发警报。我尝试了您的解决方案
var-filter=/^[\w'.\s]{1,50}$/
这也是
var-filter=/^[\wa-zA-Z'.\s]{1,50}$/浏览器控制台中是否存在任何错误?您确定
checkname()
方法正在被调用吗?请确保该函数正常工作并被调用,因为我尝试了其他不包含单引号的正则表达式,它们可以工作,例如电子邮件的正则表达式,但当有单引号时,就会出现问题。所以我猜问题在于正则表达式。单引号是有效的还是无效的
var filter = /[a-zA-Z\x22\x27]{1,50}/;
var filter = /[a-zA-Z\"\']{1,50}/;