使用split()方法拆分字符串

时间:2015-01-04 20:56:00

标签: javascript regex split

我正在尝试将字符串拆分为数组,但我正在使用的正则表达式似乎无法正常工作

我的代码

<script type="text/javascript">
    function GetURLParameter(sParam) 
    {
        var sPageURL = window.location.search.substring(1);
        var sURLVariables = sPageURL.split('&');
        for (var i = 0; i < sURLVariables.length; i++)
        {
            var sParameterName = sURLVariables[i].split('=');
            if (sParameterName[0] == sParam)
            {
                return sParameterName[1];
            }
        }
    }
    </script>
<script type="text/javascript">
        $(document).ready(function(){
        var product= GetURLParameter("name");
        var producttype=GetURLParameter("type");
        var prod = product.replace(/%20/g," ");
        var productname = prod.split('\\s+(?=\\d+M[LG])');
        alert(productname[0]);
        });
    </script>

我的输入字符串是“Calpol Plus 200MG

预期输出为array[0] = "Calpol Plus"array[1] = "200MG"

我使用的正则表达式是\\s+(?=\\d+M[LG])

2 个答案:

答案 0 :(得分:3)

您将正则表达式作为字符串传递,请参阅?

var productname = prod.split('\\s+(?=\\d+M[LG])');

您需要将其作为正则表达式文字传递:

var productname = prod.split(/\\s+(?=\\d+M[LG])/);

split()将通过正则表达式或子字符串进行拆分,具体取决于传递的内容。

答案 1 :(得分:2)

而不是

"Calpol Plus 200MG".split('\\s+(?=\\d+M[LG])')

您必须使用以下其中一项:

  • RegExp构造函数将您的字符串转换为正则表达式:

    "Calpol Plus 200MG".split(RegExp('\\s+(?=\\d+M[LG])'))
    
  • 直接使用正则表达式文字:

    "Calpol Plus 200MG".split(/\s+(?=\d+M[LG])/)
    

    请注意,在这种情况下,您不需要将\个字符替换为另一个\