在任何位置添加至少一个字母,大写或小写字母'到现有的正则表达式(javascript)

时间:2018-01-16 01:16:41

标签: javascript regex

我已经拥有以下正则表达式:^([^\s]+\s)*([^\s]+$)

它执行以下操作:

  • 开始时没有空格
  • 最后没有空格
  • 中间没有双重空格
  • 任何角色

但现在我需要在任何位置至少包含一个字母大写或小写。

我试过在几个地方与[A-Za-z]玩耍,但是不成功。

我怎样才能完成这个?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为应该这样做:

^(\S\s?)*[A-Za-z](\s?\S)*$
  1. 这不接受空字符串
  2. 如果它们看起来像[A-Za-z]
  3. ,则只接受长度为1的字符串
  4. 我们一开始就禁止空格,要求任何空格字符前面都有A-Za-z
  5. 左侧的非空格字符
  6. 我们不允许字符串末尾的空格要求任何空格字符后跟A-Za-z
  7. 右侧的非空格字符
  8. 双重空格由3和4覆盖,因为任何空格必须与字符串中的任何空格相邻

答案 1 :(得分:1)

试试这个正则表达式:

^(?!\s)(?!.*\s$)(?!.*?(\s)\1)(?=.*?[A-Z])(?=.*?[a-z]).+$

Click For Demo

<强>解释

  • ^ - 断言字符串的开头
  • (?!\s) - 用于验证下一个字符不是空格的否定预测
  • (?!.*\s$) - 负面预测以确保最后一个字符不是空格
  • (?!.*?(\s)\1) - 负面预测以确保测试字符串没有任何连续的空格
  • (?=.*?[A-Z]) - 确保字符串中有大写字母的正面预测
  • (?=.*?[a-z]) - 确保字符串中某处有一个小写的正面预测
  • .+ - 满足上述所有条件后,匹配任何字符的1次出现(换行符除外)
  • $ - 断言字符串的结尾