【问题标题】:Codeigniter - Regex Expression to include a period - preg_matchCodeigniter - 包含句点的正则表达式 - preg_match
【发布时间】:2013-01-15 10:57:04
【问题描述】:

我有一个正则表达式如下:

return ( ! preg_match("/^([-a-z_ -])+$/i", $str)) ? FALSE : TRUE;

我需要添加它以允许一个句点,以便输入可以是这样的:

“圣奥斯特尔”或“圣托马斯”

我尝试了各种方法将句点添加到上述规则中,但页面要么崩溃并只显示空白页面,要么触发了我的验证错误。

我尝试过这样的事情,但无济于事。

([-a-z_ -.])
([-a-z_ -\.])
([-a-z_ -])\.
(\.[-a-z_ -]) etc etc...

我已经尝试了所有方法,但似乎没有任何运气 - 任何想法

非常感谢

詹姆斯

【问题讨论】:

  • 初始正则表达式是多余的,因为它指定了两次-。此外,[a-z_ .-] 应该可以工作,你只需要让a-z-[ 之后或] 之前。最后,return !condition ? false : true; 应该简化为return condition;,因为condition 已经返回truefalse
  • 谢谢,我现在已经试过了: /^([a-z_ .-])+$/i 并且我仍然只是得到一个没有内容的白页 - 如果我删除 .页面又回来了——有什么想法吗?我也试图逃避这段时间,但它仍然不起作用
  • 对不起,我的错,有一个错字 - 谢谢 sp00m - 你明白了!
  • @sp00m 这看起来很像一个答案......你为什么不这样发布它以便dBD可以正式承认你的正则表达式智慧

标签: regex codeigniter validation preg-match


【解决方案1】:

三点:

  1. 初始正则表达式是多余的,因为它指定了两次-

  2. [a-z_ .-] 应该可以工作,你只需要让a-z-[ 之后或] 之前(否则,- 将被视为元字符)。

  3. return !condition ? false : true; 应简化为 return condition;,因为 condition 已返回 truefalseif(!condition) {var = false;} else {var = true;} 的逻辑相同,应简化为 var = condition;)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-05
    • 2011-11-19
    • 2014-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多