PHP Regex - 接受所有UTF-8字符,无尾随空格,排除符号,范围在2-16长度之间

时间:2015-12-04 16:30:53

标签: php regex string utf-8

我无法找出正确的PHP正则表达式来匹配这些条件:

  • 接受所有UTF-8字符
  • 接受数字
  • 接受介于2-16个字符范围内的字符串
  • 排除“@”符号
  • 接受所有其他符号,例如:“!#$%^& *))¶¡££”
  • 允许字符间的单个空格,但不允许多个
  • 不传递尾随空格,例如:

"Hello World!" //should be true

" Hello World! " //should be false

"Hello World!" //should be false

以下示例应该失败:

"a" //should fail because the length is less than 2

"whatsup@gmail.com" //should be false because of @ symbol

以下示例应通过:

"£ª¡™ƒ˚å 象形字 123" //should be true

What's up? 123" //should be true

"!#$%^&*(){}-_+" //should be true

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

/^((?!@).)*$/

此PHP正则表达式当前接受字符,不包括@符号,并包含数字。

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可以使用这个基于前瞻性的正则表达式来满足所有条件:

/^(?=.{2,16}$)[^@\s]+(?:\h[^@\s]+)*$/gum

RegEx Demo