我尝试输入以下值“f + 11111111111”,我的代码不显示错误信息。我试图删除regex2条件,然后它工作。但是怎么了?这是一个AND条件,为什么它就像是一个OR运算符?
function validatePhone()
{
var phone = document.getElementById("phone").value;
var regex1 =/^[\+\d][\s(\-\d][\s()\-\d]{8,}/g;
var regex2 = /\D*(\d\D*){11}/g;
if (!phone.match(regex1) && !phone.match(regex2)) {
producePrompt("Error", "comment_phone_prompt");
return false;
}
}
function producePrompt(message, promptLocation)
{
document.getElementById(promptLocation).innerHTML = message;
}
答案 0 :(得分:0)
您的第二个正则表达式/\D*(\d\D*){11}/g
与给定的字符串f+11111111111
匹配,因此整个条件的计算结果为false
。您可以使用regexper.com来显示正则表达式。
我不确定你要做什么,但请注意,即使这个字符串与第二个正则表达相匹配:'f+1dsadsadasda123131231dsdadai-094i-)@)#(@)_(#_!'
这是你想要的吗?
答案 1 :(得分:0)
第二个正则表达式匹配一切。单个正则表达式就足够了。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.bassammetwally.anew.MainActivity">
<RelativeLayout
android:layout_width="420dp"
android:layout_height="50dp"
android:background="#3955a1">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Writer's Block"
android:textColor="#ffffff"
android:textSize="30dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="4dp"
android:id="@+id/Asd"/>
<ImageButton
android:layout_width="20dp"
android:layout_height="40dp"
android:src="@drawable/pen"
android:layout_marginLeft="380dp"
android:layout_marginTop="5dp"
android:scaleType="fitXY"
android:adjustViewBounds="true"
android:id="@+id/image"/>
</RelativeLayout>
</LinearLayout>