【问题标题】:how to pass a variable into an regular expression in javascript [duplicate]如何将变量传递给javascript中的正则表达式[重复]
【发布时间】:2012-01-24 08:39:08
【问题描述】:

可能重复:
How do you pass a variable to a Regular Expression JavaScript?

我需要帮助来解决问题,因为代码因以下原因而失败 长度[0]:

<html>
<body>

<script type="text/javascript">
function xyz(){
var predefLength = "5,5";
var number = "20";
var numLength = predefLength.split(",");
var result = /^[-+]?\d{0,numLength[0]}(\.\d{0,numLength[1]})?$/.test(number);
document.write(result);
}
</script>

</body>
</html>

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    使用RegExp-构造函数,例如:

    var pattern = new RegExp('pattern as a string', 'flags as a string');
    

    或者:

    var result = new RegExp('^[-+]?\d{0,' + numLength[0] + '}(\.\d{0,' + numLength[1] + '})?$').test(number);
    

    【讨论】:

    • 没错。正则表达式文字不能与字符串文字连接。
    【解决方案2】:

    试试这个:

    <script type="text/javascript">
    function xyz(){
    var predefLength = "5,5";
    var number = "20";
    var numLength = predefLength.split(",");
    
    var pattern = new RegExp('^[-+]?\\d{0,'+numLength[0]+'}(\\.\\d{0,'+numLength[1]+'})?$');
    var result = pattern.test(number);
    document.write(result);
    }
    </script>
    

    【讨论】:

      【解决方案3】:

      numLength[0] 是 5。我们不能在正则表达式中添加变量的评估。下面的代码返回 true。

      var result = /^[-+]?\d{0,x}(\.\d{0,5})?$/.test(number);
      

      【讨论】:

        猜你喜欢
        • 2010-10-04
        • 2020-06-09
        • 2013-04-19
        • 1970-01-01
        • 2017-10-24
        • 2020-01-04
        • 2018-04-06
        • 1970-01-01
        • 2014-08-10
        相关资源
        最近更新 更多