如何使javascript只接受给定的正则表达式?
我试图用javascript创建一个表单来注册用户,其中一个字段是电话号码 我有几个电话号码必须遵循的模式 它必须包含一个“+”后跟一个从1到999的数字,然后是“(“然后是一个从1到999的数字”)”以及至少4个从0到9的数字 或 一个“+”后跟一个从1到999的数字,然后是至少4个从0到9的数字 或 0到9之间至少有4位数字 您可以将任何电话号码保存在表单中,但如果您介绍的电话号码与这些模式不同,则应显示一条消息来警告您(警告部分起作用) 这是我制作的javascript函数如何使javascript只接受给定的正则表达式?,javascript,regex,spring,forms,Javascript,Regex,Spring,Forms,我试图用javascript创建一个表单来注册用户,其中一个字段是电话号码 我有几个电话号码必须遵循的模式 它必须包含一个“+”后跟一个从1到999的数字,然后是“(“然后是一个从1到999的数字”)”以及至少4个从0到9的数字 或 一个“+”后跟一个从1到999的数字,然后是至少4个从0到9的数字 或 0到9之间至少有4位数字 您可以将任何电话号码保存在表单中,但如果您介绍的电话号码与这些模式不同,则应显示一条消息来警告您(警告部分起作用) 这是我制作的javascript函数 <scr
<script type="text/javascript">
function checkPhone() {
var numberPattern1 = new RegExp("\\+[0-9]{1,3}[0-9]{4,}");
var numberPattern2 = new RegExp("\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}");
var numberPattern3 = new RegExp("[0-9]{4,}");
var phone = document.getElementById("phone");
var test1 = numberPattern1.test(phone.value);
var test2 = numberPattern2.test(phone.value);
var test3 = numberPattern3.test(phone.value);
var match = test1 || test2 || test3;
if (!match) {
var test = alert("<spring:message code = 'number.dont.match'/>");
}
}
</script>
并用如下字符串发出警告
456
fsdfsdfhge
+0(0)4567
+65(4956)3456
问题是,当我输入这样的内容时,它并没有警告我
+1234 //(it should have at least one more digit)
++1245
+65(4956)3456 //(Can't have more than 3 numbers in the parenthesis)
+0(0)4567 //(the number after the "+" and from the parenthesis must be at least 1)
aaaaaaaaaa8888aaaaaaaaaa
aaaaa+45(867)86543
jguosfoafos+339999oiajdiajdsi
它看起来像是匹配任何字符串,只要它有4个数字在一起,就像最后一个模式,我认为问题是由于正则表达式,但我不太确定。
如果整个字符串与模式不匹配,我应该怎么做才能得到警告?正则表达式测试函数尝试在给定字符串中查找正则表达式模式,它可能是子字符串。要匹配整个字符串,可以在正则表达式的开头和结尾指定开始(“^”)和结束(“$”)字符 所以你的模式应该是
"^\\+[0-9]{1,3}[0-9]{4,}$"
"^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$"
"^[0-9]{4,}$"
参考正则表达式测试函数尝试在给定字符串中查找正则表达式模式,它可能是子字符串。要匹配整个字符串,可以在正则表达式的开头和结尾指定开始(“^”)和结束(“$”)字符 所以你的模式应该是
"^\\+[0-9]{1,3}[0-9]{4,}$"
"^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$"
"^[0-9]{4,}$"
请参阅使用
^
和$
调整正则表达式以说明字符串的开始和结束:
function checkPhone() {
var numberPattern1 = new RegExp("^\\+[0-9]{1,3}[0-9]{4,}$");
var numberPattern2 = new RegExp("^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$");
var numberPattern3 = new RegExp("^[0-9]{4,}$");
var phone = document.getElementById("phone");
var test1 = numberPattern1.test(phone.value);
var test2 = numberPattern2.test(phone.value);
var test3 = numberPattern3.test(phone.value);
var match = test1 || test2 || test3;
if (!match) {
var test = alert("<spring:message code = 'number.dont.match'/>");
}
}
功能检查电话(){
var numberPattern1=newregexp(“^\\+[0-9]{1,3}[0-9]{4,}$”;
var numberPattern2=newregexp(“^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$”;
var numberPattern3=newregexp(“^[0-9]{4,}$”;
var phone=document.getElementById(“电话”);
var test1=numberPattern1.test(phone.value);
var test2=numberPattern2.test(phone.value);
var test3=numberPattern3.test(phone.value);
var match=test1 | | test2 | | test3;
如果(!匹配){
var测试=警报(“”);
}
}
例子:
功能检查电话(电话){
var numberPattern1=newregexp(“^\\+[0-9]{1,3}[0-9]{4,}$”;
var numberPattern2=newregexp(“^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$”;
var numberPattern3=newregexp(“^[0-9]{4,}$”;
var test1=numberPattern1.test(电话);
var test2=numberPattern2.test(电话);
var test3=numberPattern3.test(电话);
var match=test1 | | test2 | | test3;
如果(!匹配){
var测试=警报(“”);
}
}
支票电话(“+1234”)代码>使用^
和$
调整正则表达式以说明字符串的开始和结束:
function checkPhone() {
var numberPattern1 = new RegExp("^\\+[0-9]{1,3}[0-9]{4,}$");
var numberPattern2 = new RegExp("^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$");
var numberPattern3 = new RegExp("^[0-9]{4,}$");
var phone = document.getElementById("phone");
var test1 = numberPattern1.test(phone.value);
var test2 = numberPattern2.test(phone.value);
var test3 = numberPattern3.test(phone.value);
var match = test1 || test2 || test3;
if (!match) {
var test = alert("<spring:message code = 'number.dont.match'/>");
}
}
功能检查电话(){
var numberPattern1=newregexp(“^\\+[0-9]{1,3}[0-9]{4,}$”;
var numberPattern2=newregexp(“^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$”;
var numberPattern3=newregexp(“^[0-9]{4,}$”;
var phone=document.getElementById(“电话”);
var test1=numberPattern1.test(phone.value);
var test2=numberPattern2.test(phone.value);
var test3=numberPattern3.test(phone.value);
var match=test1 | | test2 | | test3;
如果(!匹配){
var测试=警报(“”);
}
}
例子:
功能检查电话(电话){
var numberPattern1=newregexp(“^\\+[0-9]{1,3}[0-9]{4,}$”;
var numberPattern2=newregexp(“^\\+[0-9]{1,3}\\([0-9]{1,3}\\)[0-9]{4,}$”;
var numberPattern3=newregexp(“^[0-9]{4,}$”;
var test1=numberPattern1.test(电话);
var test2=numberPattern2.test(电话);
var test3=numberPattern3.test(电话);
var match=test1 | | test2 | | test3;
如果(!匹配){
var测试=警报(“”);
}
}
支票电话(“+1234”)
@rayo329:这是匹配的+0000000000000000
,000000000000000000
,+0(0)0000000000000000000000
@Toto-right,但正则表达式声明这样做。如果OP的长度有问题,那么它们的结尾就不是{4,}
OP说:“它必须包含一个“+”后跟一个从1到999的数字,然后(“然后是一个从1到999的数字”)”,第一个数字不应该是0
@Toto我明白你的意思了,很遗憾,我无法删除此答案,但我将稍后尝试更新它。令人惊讶的是,OP没有指出它是一个注释。@rayo329:这是匹配的+0000000000000000
,000000000000000000
,+0(0)0000000000000000000000
@Toto对,但正则表达式声明这样做。如果OP的长度有问题,那么它们的结尾就不是{4,}
OP说:“它必须包含一个“+”后跟一个从1到999的数字,然后(“然后是一个从1到999的数字”)”,第一个数字不应该是0
@Toto我明白你的意思了,很遗憾,我无法删除此答案,但我将稍后尝试更新它。令人惊讶的是,OP没有指出这是一个评论。