【问题标题】:Getting all the strings that start with "_" and end in 10 random characters JavaScript获取所有以“_”开头并以 10 个随机字符结尾的字符串 JavaScript
【发布时间】:2019-08-28 20:46:05
【问题描述】:

我有这个数组:

Array = ["rubbish3","_B07TLNWCSV","_A674598385","_U8965H456NV","crapcrap","crapcrap23]

我想要所有以“_”开头并后跟 10 个随机字符的值。

所以这个例子的回报是

Array = ["_B07TLNWCSV","_A674598385","_U8965H456NV"]

我将如何在 Javascript 中执行此操作?

更新

如果我想获取网页上所有遵循相同规则的元素,

在网页上的元素是这样的:

<tr id="_B07TLNWCSV">data</tr>

如何获取所有遵循规则“_(10 RANDOM CHARS)”的表格行元素

我了解 querySelectorAll 会获取所有遵循规则的元素,但我无法使其正常工作。

【问题讨论】:

  • Array.filter()与一个测试长度是否为11且首字符是否为_的函数一起使用。
  • 你看过filterindexOflength吗?
  • 欢迎来到 Stack Overflow! StackOverflow 不是免费的编码服务。你应该try to solve the problem first。请更新您的问题以在minimal reproducible example 中显示您已经尝试过的内容。如需更多信息,请参阅How to Ask,并拨打tour :)
  • 完全同意@Barmar。

标签: javascript string wildcard


【解决方案1】:

使用Array.filter(),过滤以_ 开头并具有11 字符长度(_ + 10 个字符)的单词

const array = ["rubbish3","_B07TLNWCSV","_A674598385","_U8965H456NV","crapcrap","crapcrap23"];

const result = array.filter(word => word.startsWith('_') && word.length === 11);

console.log(result);

【讨论】:

  • @Taki If I want to getelementsbyclassname("_(RANDOM CHARACTERS)") 这可能吗?
【解决方案2】:

这是您可能正在寻找的简单代码。 希望我的代码有用!

const array=["rubbish3","_B07TLNWCSV","_A674598385","_U8965H456NV","crapcrap","crapcrap23", "_123456789123"];
let newArray=[];
array.forEach(function(word){
  if(word.length==11&&word[0]=="_") newArray.push(word);
});

console.log(newArray);

【讨论】:

  • 如果我想 getelementsbyclassname("_(RANDOM CHARACTERS)") 这可能吗?
  • 是的,这是可能的,但如果您需要我的建议,请使用 querySelector() 而不是 getElementsByClassName()
【解决方案3】:

您只需要使用filter() 以及硬编码索引[0] 和字符串长度11

const array = ["rubbish3","_B07TLNWCSV","_A674598385","_U8965H456NV","crapcrap","crapcrap23"];

const result = array.filter((f) => { return f[0] === '_' && f.length === 11 });

console.log(result);

【讨论】:

  • 如果我想 getelementsbyclassname("_(RANDOM CHARACTERS)") 这可能吗?
【解决方案4】:

您可以为此使用filter() 方法和正则表达式:

var array = ["rubbish3","_B07TLNWCSV","_A674598385","_U8965H456NV","crapcrap","crapcrap23"];
var filteredArray = array.filter(function(elem) {
  return elem.match(/^_.{10}$/);
});
console.log(filteredArray);

正则表达式的解释:

^_ => 字符串必须以_ 开头。

.{10} => 那么我们必须有十个字符(. 表示任何字符)

$ => 字符串结尾,即字符串必须停在那里,我们不能再有任何字符了。

编辑:关于您的问题更新,针对这些元素的最简单方法是为所有元素添加一个通用类名,例如:

<tr id="_B07TLNWCSV" class="data">data</tr>
<tr id="_B07TLNWDSA" class="data">data</tr>
<tr id="_B07TLNWCXB" class="data">data</tr>

然后使用getElementsByClassName("data") 检索元素。

【讨论】:

  • 如果我想 getelementsbyclassname("_(RANDOM CHARACTERS)") 这可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
  • 1970-01-01
  • 2012-09-13
相关资源
最近更新 更多