Regex 找出正则表达式是否可以匹配

Regex 找出正则表达式是否可以匹配,regex,Regex,假设p是定义为“AB”的正则表达式模式,其中a,B是子模式。有一个字符串T,它是根据模式P测试的。我想知道T是否是P的部分匹配,这意味着T是针对a的,而不是针对B的,因为它的长度不足以匹配B。如果它与一个由B匹配的字符串U组合,T可能是匹配的 var A = "[a-z]{3}"; var B = "[0-9]{2}" var P = A + B; var T = "abc"; var U = "20"; var macthes_T = regex(P, T); // false var m

假设p是定义为“AB”的正则表达式模式,其中a,B是子模式。有一个字符串T,它是根据模式P测试的。我想知道T是否是P的部分匹配,这意味着T是针对a的,而不是针对B的,因为它的长度不足以匹配B。如果它与一个由B匹配的字符串U组合,T可能是匹配的

var A = "[a-z]{3}";
var B = "[0-9]{2}"
var P = A + B;

var T = "abc";
var U = "20";

var macthes_T = regex(P, T); // false
var matches_U = regex(P, U); // false
var matches_TU = regex(P, T + U); // true

var couldMatch_T = magic(P, T); // true
var couldMatch_U = magic(P, U); // false
var couldMatch_TU = magic(P, T + U); // true
现在我想在A上做这个递归,因为它是p的“开始”和输入T的神奇函数的“实现”,它看起来像这样:

var A_1 = "[a-z]";
var A_2 = "[a-z]";
var A_3 = "[a-z]";
var A = A_1 + A_2 + A_3;

// T="" would return false
// T="a" would return true
var hasChar(T) {
   return length(T) > 0;
}

// T="ab" would return a and T is "b"
var getChar(T) {
  var c = T[0];
  T = substring(T, 1);
  return c;
}

// Let x element of [a-z]
// would return true for "", "x", "xx", "xxx"
// would return false for any other input T
var magic_A(T) {
  if(!hasChar(T)) {
    return true;
  }
  if(!regex(A_1, getChar(T))) {
    return false;
  }
  if(!hasChar(T)) {
    return true;
  }
  if(!regex(A_2, getChar(T))) {
    return false;
  }
  if(!hasChar(T)) {
    return true;
  }
  if(!regex(A_3, getChar(T))) {
    return false;
  }
  return true;
}

嗯,像这样的

\b(a | ab)[a-z]*

这一个检查是否有a或ab,然后在后面的a-z之间的任何字符,并将整个单词包装为匹配

刚刚注意到你的代码不能与正则表达式一起工作
这里有一些参考资料,你的问题到处都是。请明确说明哪些应该匹配,哪些不应该匹配。另外,
*?+
也是无效的正则表达式。除非你指的是单独的字符。无论哪种方式,
startsWith
都不适用于正则表达式。。。