JavaScript 正则表达式 - 必须至少包含 UTF-8 中的任意 2 个字母

标签 javascript regex string utf-8

现在,我正在尝试创建具有以下条件的 JavaScript 正则表达式:

  • 接受所有 UTF-8 字符
  • 单词之间允许有空格,但只能有1个空格,不能有多个。
  • 允许所有符号,例如:!#$%^&*()_-={}[] 除了:“@”
  • 字符串前后没有尾随空格。
  • 范围应为 2-16 个字符,包括空格
  • 并且字符串中必须至少包含 2 个字母字符。

这是我目前制定的正则表达式:

/^(?![^@]*@)(?![^]*\s\s)\S[^]{0,14}\S$/

到目前为止,除了不满足最后一个条件(它必须至少包含 2 个字母)之外,它执行了以下所有操作。例如:

"..He"//应该是真的

"He$*"//应该是真的

".."//应该是假的

"*%"//应该是假的

"!#$%^&*()"//应该是假的,因为没有字母

"$$tonyMoney™"//应该是真的

"أنا أحب جاو™"//应该是真的

"To"//应该为真

感谢任何帮助!谢谢!

最佳答案

你可以使用这个基于 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/>";
<script src="https://cdnjs.cloudflare.com/ajax/libs/xregexp/2.0.0/xregexp-all-min.js"></script>

关于JavaScript 正则表达式 - 必须至少包含 UTF-8 中的任意 2 个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34141921/

相关文章:

regex - 根据部分匹配替换整个字符串

c# - 获取字符串的一部分并在 C# 中组合它们?

用于匹配正整数和负整数的 Javascript RegEx

javascript - 在 HTML5 中,我可以同时多次播放相同的声音吗?

javascript - 由于正确的事件绑定(bind)问题,项目被软拒绝

javascript array.slice().push() 未按预期工作

regex - 删除句点,而不是小数点

javascript - 抛出前一帧信息

java - Java 中完美的 URL 验证正则表达式

java - 检查字符串是否包含\n Java