我有这个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>
single
附近添加double quotes
或"regex"
,则正则表达式不起作用。forward slashes
周围添加/regex/
,那么正则表达式可以正常工作但不完全,例如它不允许100name
,但它允许name100
。"/regex/"
或'/regex/'
,则正则表达式不起作用。name = name.replace(filter, '');
,则脚本无效。 1 - 如何在正则表达式中正确包含single quote
?
2 - 如何正确包含double quotes
?
我使用asp.net
在RegularExpressionValidator
中测试了我的相同正则表达式并且它工作正常,因为我可以用双引号来包装它我认为:
<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" Text="name is not valid" validationgroup="validationgroup1" ValidationExpression="^[a-zA-Z'.\s]{1,50}"></asp:RegularExpressionValidator>
但在JavaScript
我无法用双引号包装正则表达式。所以必须有一些方法来解决它。
答案 0 :(得分:2)
答案 1 :(得分:0)
你可以试试这个
var filter = /[a-zA-Z\"']{1,50}/;
答案 2 :(得分:0)
你可以尝试使用十六进制的过滤器,或使用反斜杠\
进行转义var filter = /[a-zA-Z\x22\x27]{1,50}/;
或
var filter = /[a-zA-Z\"\']{1,50}/;
在十六进制中,"
为\x22
,'
为\x27
这应该有用。