目前,我正在尝试使用以下条件创建JavaScript正则表达式:
这是我到目前为止制定的正则表达式:
/^(?![^@]*@)(?![^]*\s\s)\S[^]{0,14}\S$/
到目前为止,除了它不符合最后一个必须包含至少2个字母的条件外,它还会执行以下所有操作。例如:
"..He" //should be true
"He$*" //should be true
".." //should be false
"*%" //should be false
"!#$%^&*()" //should be false since there is no letters
"$$tonyMoney™" //should be true
"أنا أحب جاف™" //should be true
"To" //should be true
任何帮助表示赞赏!谢谢!
答案 0 :(得分:1)
您可以使用此基于XRegExp的正则表达式:
var rx = XRegExp("^(?![^@]*@)(?![^]*\\s\\s)(?=(?:\\P{L}*\\p{L}){2})\\S[^]{0,14}\\S$");
正则表达式分解:
^
- 字符串开始(?![^@]*@)
- 字符串@
(?![^]*\\s\\s)
- 没有两个连续的空格(?=(?:\\P{L}*\\p{L}){2})
- 至少2个Unicode字母\\S[^]{0,14}\\S
- 长度为2到16个符号,字符串的开头和结尾没有空格。$
- 字符串结尾请参阅regex demo
var rx = XRegExp("^(?![^@]*@)(?![^]*\\s\\s)(?=(?:\\P{L}*\\p{L}){2})\\S[\\s\\S]{0,14}\\S$");
document.body.innerHTML = rx.test("..He") + " - must be true<br/>";
document.body.innerHTML += rx.test("He$*") + " - must be true<br/>";
document.body.innerHTML += rx.test("..") + " - must be false<br/>";
document.body.innerHTML += rx.test("*%") + " - must be false<br/>";
document.body.innerHTML += rx.test("!#$%^&*()") + " - must be false<br/>";
document.body.innerHTML += rx.test("$$tonyMoney™") + " - must be true<br/>";
document.body.innerHTML += rx.test("To") + " - must be true<br/>";
document.body.innerHTML += rx.test("أنا أحب جاف™") + " - must be true<br/>";
&#13;
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>
&#13;