Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript字符串操作_Javascript_Regex - Fatal编程技术网

Javascript字符串操作

Javascript字符串操作,javascript,regex,Javascript,Regex,我有一个如下的字符串: var st = "ROAM-Synergy-111-222-LLX " 它可以在数值之前有任意数量的项。其可能的格式为: var st = "SSI-ROAM-Synergy-111-222-LLX " or var st = "LCD-SSI-ROAM-Synergy-111-222-LLX" etc.. 现在我只需要获取这个字符串中数值之前的项。即。 “SSI漫游协同”或“LCD SSI漫游协同” 我是这样使用的: var finalString =

我有一个如下的字符串:

var st = "ROAM-Synergy-111-222-LLX "
它可以在数值之前有任意数量的项。其可能的格式为:

var st = "SSI-ROAM-Synergy-111-222-LLX "     or
var st = "LCD-SSI-ROAM-Synergy-111-222-LLX"  etc..
现在我只需要获取这个字符串中数值之前的项。即。 “SSI漫游协同”或“LCD SSI漫游协同”

我是这样使用的:

var finalString = st.split("-");
但是如何仅获取数值之前的术语。

您可以使用:

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

^在字符串开头断言位置
\D+匹配任何非数字字符[^0-9]
量词:在一次和无限次之间,尽可能多的次数
(?=-)正向前瞻-断言下面的正则表达式可以匹配
-按字面意思匹配字符

尝试以下代码

<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>

var yourString=“ROAM-Synergy-111-222-LLX”;
var输出=retriveStartString(您的字符串);
警报(输出);
函数retriveStartString(inputString){
var newString=“”;
对于(i=0;i=48&&subStr.charCodeAt(0)

这里
b
的输出将是
[“LCD”、“SSI”、“ROAM”、“Synergy”]

这里是使用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));

还有没有任何数值的字符串吗?没有。原始字符串必须有一些数字代码。例如“111-222-LLX”或“333-444-LLX”等。我注意到的一件事是……如果我传递这个字符串,即“nLight-SSI-RELOC-RTLED-Synergy-345-777-LLA替换”…那么它只返回“nLight-SSI-RELOC-RTLED”你能检查一下吗?当输入是
nLight-SSI-RELOC-RTLED-Synergy-345-777-LLA替换时,它实际上返回
nLight-SSI-RELOC-RTLED-Synergy
,这是不正确的吗?谢谢再次确认。我在代码中使用了它,这是我面临的唯一问题…让我再次检查一下..我可能做错了什么。。。
var st = "ROAM-Synergy-111-222-LLX";
var lIdx = st.indexOf(st.match(/-\d/));
console.log(st.substr(0, (lIdx >= 0) ? lIdx : st.length));