<lightning:input type="email"..>の入力チェックがちょっと足りないなと思った

f:id:kyuhee:20190120025612p:plain

①カスタム項目(メール)

コンポーネント

<lightning:input type="email" label="Email" name="email" value="abc@domain.com" />

コンポーネント

<lightning:input type="email" label="Email (using pattern)" name="email" value="abc@domain.com"
                            pattern="^(([^&lt;>()\[\]\\.,;:\s@&#34;]+(\.[^&lt;>()\[\]\\.,;:\s@&#34;]+)*)|(&#34;.+&#34;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$"
                            messageWhenTypeMismatch="@だけチェック"
                            messageWhenPatternMismatch="メール項目と同じくチェック"/>


② で「@」チェックのみするので
メールアラートとかのプロセスで落ちる問題がある。
③のようにpatternを使うと①と同じくチェックしてくれる。

controllerにチェック処理書かなくて済む!ラク



patterに書いてる正規表現について

いろいろ試してみて使えたのがこれ!↓

^(([^&lt;>()\[\]\\.,;:\s@&#34;]+(\.[^&lt;>()\[\]\\.,;:\s@&#34;]+)*)|(&#34;.+&#34;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$

だが、このままpatternに書くとエラーになるから
& (&) 、< (<) 、> (>) 、" (")で書き換える必要がある。
stackoverflow.com


↓書き換えた後の正規表現

^(([^&lt;>()\[\]\\.,;:\s@&#34;]+(\.[^&lt;>()\[\]\\.,;:\s@&#34;]+)*)|(&#34;.+&#34;))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$