gpt4 book ai didi

javascript - XRegExp 接受所有 UTF-8 字符、单词之间的空格、排除某个符号,并且没有尾随空格

转载 作者:行者123 更新时间:2023-11-27 23:36:42 25 4
gpt4 key购买 nike

我很难找出 XRegExp 中的正则表达式来接受 JavaScript 中的这些类型的要求:

  • 接受所有 UTF-8 字符
  • 单词之间允许有空格,但只能有 1 个空格,不能有多个空格。
  • 允许所有符号,例如:!#$%^&*()_-={}[],但“@”除外
  • 字符串前后没有尾随空格,例如:

“世界你好!”//应该是true

“Hello World!”//应该是 false

“世界你好!”//应该是假的

以下是应该通过的示例:

"ÅÅÅÅ 象形字 123"//应该是 true

“怎么了?123”//应该是真的

"!#$%^&*()_+=+"//应该是 true

以下示例应该会失败:

"hello@gmail.com"//应该因“@”符号而失败

"!@#$%^&*()_+="//应该因为“@”符号而失败

上面有更多示例

到目前为止我所拥有的是:

XRegExp('^\\p{L}|[0-9]+$')

仅接受所有 UTF-8 字符和数字。

任何帮助将不胜感激!

最佳答案

您可以依赖由负向预测提供支持的常用正则表达式:

^(?![^@]*@)(?![^]*\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

关于javascript - XRegExp 接受所有 UTF-8 字符、单词之间的空格、排除某个符号,并且没有尾随空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34077364/

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