我很难在XRegExp中找出正则表达式来接受JavaScript中的这些类型的要求:
"Hello World!" //should be true
" Hello World! " //should be false
"Hello World!" //should be false
以下是应该通过的示例:
"ÅÅÅÅ 象形字 123" //should be true
"What's up? 123" //should be true
"!#$%^&*()_+=+" //should be true
以下示例应该失败:
"hello@gmail.com" //should fail because of "@" symbol
"!@#$%^&*()_+=" //should fail because of "@" symbol
以上更多例子
到目前为止我所拥有的是:
XRegExp('^\\p{L}|[0-9]+$')
只接受所有UTF-8字符和数字。
任何帮助将不胜感激!
答案 0 :(得分:1)
您可以依赖通常使用负面前瞻功能的RegExp:
^(?![^@]*@)(?![^]*\s\s)\S[^]{0,18}\S$
故障:
^
- 字符串开头(?![^@]*@)
- 没有@
符号(?![^]*\s\s)
- 没有双重空格\S[^]{0,18}\S
- 非空白符号(1),[^]{0,18}
- 0到18个任意字符和1个非空格(总共最多20个,最小2个)。$
- 字符串结束。
var rx = /^(?![^@]*@)(?![^]*\s\s)\S[^]{0,18}\S$/;
document.body.innerHTML = rx.test("Hello World!") + " - must be true<br/>";// true
document.body.innerHTML += rx.test(" Hello World! ") + " - must be false<br/>"; //should be false
document.body.innerHTML += rx.test("Hello World!") + " - must be false<br/>"; //should be false
document.body.innerHTML += rx.test("ÅÅÅÅ 象形字 123") + " - must be true<br/>"; //should be true
document.body.innerHTML += rx.test("What's up? 123") + " - must be true<br/>"; //should be true
document.body.innerHTML += rx.test("!#$%^&*()_+=+") + " - must be true<br/>"; //should be true
document.body.innerHTML += rx.test("hello@gmail.com") + " - must fail<br/>"; //should fail because of "@" symbol
document.body.innerHTML += rx.test("!@#$%^&*()_+=") + " - must fail<br/>"; //should fail because of "@" symbol
&#13;