javascript
  • html
  • angularjs
  • regex
  • angular-ngmodel
  • 2016-11-15 4 views 1 likes 
    1

    複数の文字列をチェックして、電子メールと電話番号を入力してエラーメッセージ "ERR1"電話番号と電子メールは許可されません)。改行のための電子メール/電話スローエラー(入力キー) - HTML/AngularJS

    $rootScope.RejectEmailPhoneNo='^(?:(?!(@|([0-9]{3}(|-|_|\.)[0-9]{3})|[0-9]{4}|([0-9]{2}(|-|_|\.)[0-9]{2})|([0-9](|-|_|\.)[0-9](|-|_|\.)[0-9]))).)+$' 
    

    所望の結果:複数桁の数字(例えば、4454、313 345、22 14,546-343を許可してはならない RE、1 2 2

    Iは、次の正規表現(RE)を使用し4など)と '@'記号を使用します。他の文字を許可する( 'ドット'を使用)。

    問題:はしかし、何が起こることです:ユーザが入力キー入力したとき、それらはエラーメッセージ「ERR1」の通知を受けます。私が代わりに[\ sの\の「(?s)は」を使用する場合 私はDOTALL演算子を使用して改行を許可するようにREを変更したとき、私は私が入力した場合でも、エラーメッセージ「ERR1」を取得

    $rootScope.RejectEmailPhoneNo='^(?:(?!(@|([0-9]{3}(|-|_|\.)[0-9]{3})|[0-9]{4}|([0-9]{2}(|-|_|\.)[0-9]{2})|([0-9](|-|_|\.)[0-9](|-|_|\.)[0-9])))[\s\S])+$' 
    

    を「はABCDE」 S] - @と複数桁の数字を含むすべての文字を許可します。

    私の質問は:

    (1)私は改行のエラーをスローしないように、この正規表現になるだろうどのように - しかし、ユーザーが電子メールを入力した場合にのみ、エラーをスローする必要があります(少なくともまたは@)と複数桁数字?

    上記REは、コンテキストで使用されます。

     <md-input-container class="md-block" flex-gt-sm> 
        <label>Description</label> 
        <textarea md-maxlength="900" rows="1" ng-model="job.description" ng- required=true name="description" type="text" 
        pattern={{RejectEmailPhoneNo}} 
        ng-class="{ error : profile_form.description.$touched && profile_form.description.$error.required,typed : profile_form.description.$valid && profile_form.description.$touched && profile_form.description.$dirty }" 
        class="ng-pristine ng-untouched ng-valid ng-valid-pattern ng-valid-maxlength" 
        aria-multiline="true" aria-invalid="false"></textarea> 
    
        <div ng-messages="fulltime_form.description.$error"> 
        <div ng-message="required">Please provide description.</div> 
        <div ng-message="pattern">Phone numbers and emails are not allowed.</div> 
    

    **(2)REは、コントローラ機能を通じて「説明」をチェックすることができれば - どのように私は機能としてそれを書くのですか?角度-JSに**

    答えて

    1

    わからない私はそれを理解している場合、右

    望ましい結果:複数桁の数字(例えば、4454、313 345を許可してはならないRE 、22 14,546-343、1 2 2 4など)および '@'記号が含まれます。他の文字を許可する( 'ドット'を使用)。

    問題:ただし、ユーザーがEnterキーを入力すると、エラーメッセージ "ERR1"が通知されます。私はDOTALL演算子を使用して改行を許可するようにREを変更したとき、私は私が入力した場合でも、エラーメッセージ「ERR1」をGET「ABCDE」

    を問題がある:あなたが内部の電子メールの発生を検索する必要があります文字列。 電子メールがある場合、にはエラーが表示されます。これはあなたの問題であれば、解決策は非常に単純である、上記のコードは、それを解決する必要があり

    const regex = /([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)/i; 
    const str = `hello, 
    
    this is an email test 
    i am verifying whether there is or not an email in this message 
    
    regards, 
    [email protected]`; 
    
    let m; 
    
    if ((m = regex.exec(str)) !== null) { 
        if(m.length > 0){ 
         alert('there is email(s). Show the error'); 
        } 
    }else{ 
        alert('there is no email. Success!'); 
    } 
    

    テキスト内の電子メールアドレスがある場合、それはエラーのみに警告します。

    +0

    ありがとう、私はREの使い方についてより多くの文脈を与えるために質問を更新しました。コードは角型であり、あなたから与えられたJSコードにどのように収まるかはわかりません。 – Srilekha

    関連する問題