【问题标题】:Trouble with a word limit range regular expression字数限制范围正则表达式的问题
【发布时间】:2009-09-15 13:57:11
【问题描述】:

我正在使用正则表达式将在文本框字段中输入的单词限制为 250-500 个单词。

(((^\s*)*\S+\s+)|(\S+)){250,500}

由于我对正则表达式知之甚少,所以我从另一个网站复制了它。无论输入多少字,我都会收到验证错误。

这是表单所在的页面,如果您想自己尝试一下:

http://mlknew.timpecoraro.com/dreamers-community/win-a-dream/

该站点正在运行带有 cforms 插件的 Wordpress,因此我只能使用正则表达式进行验证。

感谢您的帮助!

【问题讨论】:

    标签: regex validation wordpress


    【解决方案1】:

    怎么样

    ^\s*(\S+\s+){250,499}\S*$
    

    这将首先将要搜索的字符串锚定在字符串的开头和结尾。然后可选地匹配空格(如果字符串以 some 开头)。然后匹配(一个或多个非空格字符)+(一个或多个空格字符,包括换行符)的 249-499 次重复。然后匹配一个可选的非空格字符块以达到 500(但如果文本末尾包含空格也不会失败)。

    【讨论】:

    • 无论输入多少字,仍然会出现验证错误。这可能是输入的特定正则表达式以外的问题。 . . .
    • 想通了。 . .该插件正在剥离斜线。好的正则表达式!
    【解决方案2】:

    你为什么不试试

    (\w+\s+){250,500}

    如果您的 wordpress 主机的 php 版本高于 4.3,使用 str-word-count 会更好。

    【讨论】:

    • 不,这将完全匹配“word”类中的 250 个连续字符。
    • 对,你为什么不使用 \s+ 正则表达式拆分并计算结果数?
    • like $array = preg_split('/\s+/', $subject); if(count($array)500){ echo "bad"; }
    猜你喜欢
    • 1970-01-01
    • 2019-05-29
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多