【问题标题】:how to do the regexp in javascript for this string?如何在javascript中为这个字符串做正则表达式?
【发布时间】:2010-08-06 01:07:23
【问题描述】:

我有以下可能的字符串: '' 或 '4.' 或 '*.4' 或 '4.35' 以上格式均有效,其他均无效。 基本上,如果我不关心数字或单词字符,这就是我在 PHP 中用于验证的:

        else if ( !ereg('^\*|.*\..*$',$bl_objver) )

现在,我想添加一些客户端验证,所以我只是将其翻译成 javascript:

    var ver_reg = new RegExp("^\*|.*\..*$");
    if (ver_reg.test(obj_ver) == false)

但是firebug总是显示一些错误,比如:“invalid quantifier |...*$”等..

有什么建议吗?

【问题讨论】:

    标签: php javascript regex


    【解决方案1】:

    (我不相信你的表达是正确的,但目前只是按照你所拥有的。)

    使用 RegExp 对象,您需要转义斜杠

    var ver_reg = new RegExp("^\\*|.*\\..*$");
    

    您也可以使用正则表达式文字表示法:

    var ver_reg = /^\*|.*\..*$/;
    


    这回答了你的直接问题,但是......

    至于表达式,好吧,您肯定要更正的是开始/结束锚点,每个锚点都应用于交替的一侧。

    即你说<this>|<that> 其中<this>^\*<that>.*\..*$

    您想要的是^(?:<this>|<that>)$,以确保开始/结束标记不是替代项的一部分(但使用?:,因为我们没有捕获组)。

    所以/^(?:\*|.*\..*)$/ 使用上面的第二个示例 - 此修复还需要应用于 PHP 版本(可以使用相同的语法)。

    我还质疑您使用 . 而不是 \w[^.] 或类似的,但不知道您实际在做什么,我不能确定什么是最有意义的。

    希望这会有所帮助! :)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2017-07-07
    • 2017-07-03
    • 2019-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多