Javascript 关于正则表达式中单引号和双引号的问题?
我有一个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))
<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}/;