加入Regex表达式数组

Join Regex Expression Array

本文关键字:数组 表达式 Regex 加入      更新时间:2023-09-26

我有一个单词数组,例如apple、banana、horse,我想在稍后的函数中使用它们作为分割点。

我发现了如何连接regex表达式,但它适用于固定数量的表达式:如何在JavaScript中连接regex文本?

问题:如何加入正则表达式数组?

filterTemp = [];
for (i = 0, len = filterWords.length; i < len; i++) {
  word = filterWords[i];
  filterTemp.push(new RegExp("'b" + word + "'b"));
}
filter = new RegExp(filterTemp.source.join("|"), "gi");
return console.log("filter", filter);

您不需要在循环内部构造RegExp,只需不断将字符串推入临时数组,然后在外部只使用join一次即可构造RegExp对象:

var filterWords = ['abc', 'foo', 'bar'];
var filterTemp = [];
for (i = 0, len = filterWords.length; i < len; i++) {
  filterTemp.push("''b" + filterWords[i] + "''b");
}
filter = new RegExp(filterTemp.join("|"), "gi");
console.log("filter", filter);
//=> /'babc'b|'bfoo'b|'bbar'b/gi

2022年:

const validate = (val: string) => {
  const errorMessage =
    'Enter the time separated by commas. For example: 12:30, 22:00, ... etc.';
  const values = val.split(',').map((val: string) => val.trim());
  const filter = new RegExp(/^([0-1]?[0-9]|2[0-3]):[0-5][0-9]$/);
  const isValid = values.some(
    (value: string) => !filter.test(value),
  );
  return !isValid || errorMessage;
}