gpt4 book ai didi

javascript - 正则表达式跳过电子邮件/电话会引发换行错误(输入键) - HTML/AngularJS

转载 作者:太空宇宙 更新时间:2023-11-04 16:21:23 26 4
gpt4 key购买 nike

我想检查多行字符串以防止用户输入电子邮件和电话号码,并通知他们错误消息“ERR1”(例如,不允许输入电话号码和电子邮件)。

我使用了以下正则表达式 (RE):

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

期望结果:RE 不应允许多位数字(例如 4454、313 345、22 14,546-343、1 2 2 4 等)和“@”符号。允许任何其他字符(使用“点”)。

问题:但是,发生的情况是:当用户输入输入键时,他们会收到错误消息“ERR1”的通知。当我更改 RE 以允许使用 DotAll 运算符换行时,即使输入“abcde”,我也会收到错误消息“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])+$'

当我使用“(?s)”而不是 [\s\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) 如果可以通过 Controller 函数检查 RE 的“描述” - 如何将其编写为 Angular-JS 中的函数?**

最佳答案

不知道我理解对不对

Desired Result: RE should not allow multi-digit numbers (Eg, 4454, 313 345, 22 14,546-343, 1 2 2 4, etc) and '@' symbol. Allow any other character (using 'dot').

Issue: However, what happens is: when the user inputs enter key, they get notified of error message "ERR1". When I altered the RE to allow newline using DotAll operator,I get the error message 'ERR1' even when I enter '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@domain.com`;

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!');
}

文本中包含电子邮件地址时才会发出错误警报。

关于javascript - 正则表达式跳过电子邮件/电话会引发换行错误(输入键) - HTML/AngularJS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40618245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com