我只想使此功能正常工作:
function ausPhoneValidate(str){if (/^(?:\\+?(61))? ?(?:\\((?=.*\\)))?(0?[2-57-8])\\)? ?(\\d\\d(?:[- ](?=\\d{3})|(?!\\d\\d[- ]?\\d[- ]))\\d\\d[- ]?\\d[- ]?\\d{3})$/.test(str)){return true;}return false;}
通过使用以下正则表达式:
pattern="^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})"
请查看这个小提琴JSfiddle
我有一个用于验证澳大利亚电话的html正则表达式:
<div>
<input class='rform-input' type="text" id="phone" name="phone" required placeholder=" " pattern="^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})" />
<label for="last_name">Phone number</label>
<div class="requirements">
Please enter an Australia phone number.
</div>
</div>
现在我需要一个JS函数来验证Australia Phone,但是,我需要将此函数编写为字符串,然后调用element.innerHTML = ''
以将其实现到页面上。这是我得到的:
function script_render(scr){return `<script type="text/javascript">document.getElementById("booking-p-submit").addEventListener("click", ()=>{${scr}})</script>`;}
function users_script(){
var str = '';
// str += `function emailValidate(str){if (/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(str)){return true;}return false;}`;
// str += `if(!emailValidate(document.getElementById('email-input').value)){document.getElementById('wform-error').innerHTML = 'Invalid Email'};`;
str += `function ausPhoneValidate(str){if (/^(?:\\+?(61))? ?(?:\\((?=.*\\)))?(0?[2-57-8])\\)? ?(\\d\\d(?:[- ](?=\\d{3})|(?!\\d\\d[- ]?\\d[- ]))\\d\\d[- ]?\\d[- ]?\\d{3})$/.test(str)){return true;}return false;}`
str += `if(!ausPhoneValidate(document.getElementById('phone-input').value)){document.getElementById('wform-error').innerHTML = 'Invalid Phone'};`;
return script_render(str);
}
我需要的行是针对电子邮件的验证,因为我逃脱了反斜杠,所以工作正常,但是当我执行第二部分时,我得到了SyntaxError: Invalid regular expression: unmatched parentheses"
我很抱歉,您可能很难理解代码并尝试提供一些帮助。测试也很复杂。如果有人提出建议,我会很高兴。
答案 0 :(得分:0)
您在)之后写了多余的(也许是')'?(0?[2-57-8])\ 试试这个
function script_render(scr){return `<script type="text/javascript">document.getElementById("booking-p-submit").addEventListener("click", ()=>{${scr}})</script>`;}
function users_script(){
var str = '';
// str += `function emailValidate(str){if (/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(str)){return true;}return false;}`;
// str += `if(!emailValidate(document.getElementById('email-input').value)){document.getElementById('wform-error').innerHTML = 'Invalid Email'};`;
str += `function ausPhoneValidate(str){if (/^(?:\\+?(61))? ?(?:\\((?=.*\\)))?(0?[2-57-8])\\? ?(\\d\\d(?:[- ](?=\\d{3})|(?!\\d\\d[- ]?\\d[- ]))\\d\\d[- ]?\\d[- ]?\\d{3})$/.test(str)){return true;}return false;}`
str += `if(!ausPhoneValidate(document.getElementById('phone-input').value)){document.getElementById('wform-error').innerHTML = 'Invalid Phone'};`;
return script_render(str);
}
答案 1 :(得分:0)
我也用python脚本检查过,* )?(0?[2-57-8])* 后在py中有一个额外的')'
t="^(?:\+?(61))? ?(?:\((?=.*\)))?(0?[2-57-8])\)? ?(\d\d(?:[- ](?=\d{3})|(?!\d\d[- ]?\d[- ]))\d\d[- ]?\d[- ]?\d{3})"
print(list(t).count('('),
list(t).count(')'))
c1, c2=0, 0
for i,c in enumerate(list(t)):
if c=='(':
c1+=1
elif c==')':
c2+=1
if c2>c1:
print(t[i:i+10])
print(i)
break