Javascript字符串操作

时间:2014-02-17 07:19:25

标签: javascript regex

我有一个如下所示的字符串:

var st = "ROAM-Synergy-111-222-LLX "

它可以有任何不。数值前的术语..ie。其可能的格式是:

var st = "SSI-ROAM-Synergy-111-222-LLX "     or
var st = "LCD-SSI-ROAM-Synergy-111-222-LLX"  etc..

现在我需要在此字符串中仅获取数值前的术语。即。  “SSI-ROAM-Synergy”或“LCD-SSI-ROAM-Synergy”

我这样使用:

var finalString = st.split("-");

但是如何只获得数值前的术语。

4 个答案:

答案 0 :(得分:3)

您可以使用:

var myval = st.match(/^\D+(?=-)/)[0];
//=> SSI-ROAM-Synergy OR LCD-SSI-ROAM-Synergy

<强>解释

^ assert position at start of the string
\D+ match any character that's not a digit [^0-9]
Quantifier: Between one and unlimited times, as many times as possible
(?=-) Positive Lookahead - Assert that the regex below can be matched
- matches the character - literally

答案 1 :(得分:0)

尝试使用以下代码

<script>
        var yourString = "ROAM-Synergy-111-222-LLX ";
        var output=retriveStartString(yourString);
        alert(output);

    function retriveStartString(inputString){
        var newString="";
        for (i=0;i<inputString.length;i++) {
            var subStr=inputString.substr(i,1);
            //alert(subStr);
            if(subStr.charCodeAt(0)>=48 && subStr.charCodeAt(0)<=57){
                break;
            }
            else{
                newString+=subStr;
            }
        }
        return newString;
    }
    </script>

答案 2 :(得分:0)

b="LCD-SSI-ROAM-Synergy-111-222-LLX".match(/^.+?-[0-9]/)[0].split("-");
b.pop();

此处b的输出将为["LCD", "SSI", "ROAM", "Synergy"]

答案 3 :(得分:0)

这是使用indexOf,match和substr的组合的另一种方式。

var st = "ROAM-Synergy-111-222-LLX";
var lIdx = st.indexOf(st.match(/-\d/));
console.log(st.substr(0, (lIdx >= 0) ? lIdx : st.length));
相关问题