Javascript XRegExp接受所有UTF-8字符、字与字之间的空格,以排除某个符号,且无尾随空格
我很难找到XRegExp中的正则表达式来接受JavaScript中的这些类型的需求:Javascript XRegExp接受所有UTF-8字符、字与字之间的空格,以排除某个符号,且无尾随空格,javascript,regex,utf-8,Javascript,Regex,Utf 8,我很难找到XRegExp中的正则表达式来接受JavaScript中的这些类型的需求: 接受所有UTF-8字符 单词之间的空格是允许的,怎么只有1个空格而不是多个 允许所有符号,例如:!#$%^&*()除了:“@” 字符串后面或前面没有尾随空格,例如: “你好,世界!”//应该是真的 “Hello World!”//应为false “Hello World!”//应为false 以下是应通过的示例: “Å”象形字 123//应为真 “怎么了?123”//应该是真的 “!#$%^&*()+=+”
- 接受所有UTF-8字符
- 单词之间的空格是允许的,怎么只有1个空格而不是多个
- 允许所有符号,例如:!#$%^&*()除了:“@”
- 字符串后面或前面没有尾随空格,例如:
“你好,世界!”//应该是真的
“Hello World!”//应为false
“Hello World!”//应为false
以下是应通过的示例:
“Å”象形字 123//应为真
“怎么了?123”//应该是真的
“!#$%^&*()+=+”//应为true
以下示例应失败:
”hello@gmail.com“//应因“@”符号而失败
“!@$%^&*()\+=”//应因“@”符号而失败
上面还有更多的例子
到目前为止,我得到的是:
XRegExp('^\\p{L}|[0-9]+$)
它只接受所有UTF-8字符和数字
任何帮助都将不胜感激 您可以依赖于使用负lookaheads的常规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!”)+“-必须为true
;”/真的
document.body.innerHTML+=rx.test(“Hello World!”)+“-必须为false
”//应该是假的
document.body.innerHTML+=rx.test(“Hello World!”)+“-必须为false
”//应该是假的
document.body.innerHTML+=rx.test(“Å象形字 123“+”-必须为true
//应该是真的
document.body.innerHTML++=rx.test(“What's up?123”)+“-必须为true
”//应该是真的
document.body.innerHTML+=rx.test(“!\//应该是真的
document.body.innerHTML+=rx.test(“hello@gmail.com“”+“-必须失败
”//应因“@”符号而失败
document.body.innerHTML+=rx.test(“!@$%^&*()”、“+”)-“必须失败
”//如果由于“@”符号而失败,我相信可以使用这个RegExp(在XRegExp中不需要)。有长度限制吗?哇,太棒了!你是regex国王。哈哈,我也忘了提一下,它的最小长度必须是2,最大长度必须是20。它甚至更好。我用lookahead替换了前一个重载的正则表达式,其中两个-(?!\s)(?![^]*\s$)
-被替换为\s[^]{0,18}\s
子模式。