我有一个如下所示的字符串:
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("-");
但是如何只获得数值前的术语。
答案 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));