Javascript正则表达式在

时间:2016-04-23 22:00:18

标签: javascript regex

我尝试输入以下值“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;
}

2 个答案:

答案 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>