使用javascript中的regexp获取以特定字符串开头的数组的所有字段

使用javascript中的regexp获取以特定字符串开头的数组的所有字段,javascript,regex,Javascript,Regex,我想得到那些以“test1”开头的字符串 我尝试了以下方法: 1) 你能告诉我为什么我仍然得到数组中的所有字符串吗 var myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"]; for(变量i=0;i

我想得到那些以“test1”开头的字符串

我尝试了以下方法:

1) 你能告诉我为什么我仍然得到数组中的所有字符串吗

var myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"];
for(变量i=0;i
但这一个正在返回所有元素!我做错了什么

2) 还可以检查它是否仅以“test1”开头,而不只是包含

更新了问题:

   for (var i = 0; i < myArr.length; i++) {
            if ((myArr[i]).search(new RegExp("test1") != -1)) {
                console.log(myArr[i]);
            }
        }
myArr=[“test1.nameA”、“test1.nameB”、“test2.nameC”、“test2.nameA”];
var input=“test1”;
对于(var i=0;i

谢谢!如果您需要更多说明,请告诉我,您可以根据相同的RegExp测试值

myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"]; 
var input="test1"; 
for (var i = 0; i < myArr.length; i++) { 
if(myArr[i].search( new RegExp (/input/)) != -1) { 
     console.log(myArr[i]); 
} 
}
var myArr=[“test1.nameA”、“test1.nameB”、“test2.nameC”、“test2.nameA”];
变量模式=/^test1\./;//从test1开始,后跟一个点
对于(变量i=0;i

工作示例:

您正在测试
新RegExp(“test1”)的值

newregexp(“test1”)
永远不会等于
-1
,这意味着您的测试总是正确的

这就是您需要的:

if ((myArr[i]).search(new RegExp("test1") != -1)) {
                      ^^^^^^^^^^^^^^^^^^^^^^^^^
var myArr=[“test1.nameA”、“test1.nameB”、“test2.nameC”、“test2.nameA”];
对于(变量i=0;i
或者更好的方法是,避免每次循环时都创建新的RegExp:

var myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"];

for (var i = 0; i < myArr.length; i++) {
   if ((myArr[i]).search(new RegExp("test1")) != -1) {
      console.log(myArr[i]);
   }
}
var myArr=[“test1.nameA”、“test1.nameB”、“test2.nameC”、“test2.nameA”];
var rex=新的RegExp(“test1”);
对于(变量i=0;i

另外,
.search()
返回表达式在字符串中的位置,如果未找到表达式,则返回-1。因此,当它返回零时,这意味着它是在开始处找到的。

使用
Array.prototype.filter
只能保留与regexp匹配的值,如下所示:

var myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"];
var rex = new RegExp("test1");

for (var i = 0; i < myArr.length; i++) {
   if ((myArr[i]).search(rex) != -1) {
      console.log(myArr[i]);
   }
}

要检查某个字符串是否存在,请使用
/^string/
。注意
^

谢谢,我更喜欢上面提到的带有newRegEXp的模式;我还更新了我的问题;“test1”是一个输入,让我们命名它!你知道为什么我更新的代码仍然返回所有字符串的-1吗?你不需要调用新的正则表达式。Javascript有正则表达式文本,只需使用它们。并且更新版本的regexp是错误的。没有任何内容包含“输入”字符串。这是最佳答案。接受的@Pasargad仅“包含”而不是“以开头”。
var myArr=["test1.nameA", "test1.nameB", "test2.nameC", "test2.nameA"];
var rex = new RegExp("test1");

for (var i = 0; i < myArr.length; i++) {
   if ((myArr[i]).search(rex) != -1) {
      console.log(myArr[i]);
   }
}
myArr.filter(function (i) { return /^test1\./.test(i); })