Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.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 - Fatal编程技术网

如何比较符号等于多个值的字符串。Javascript

如何比较符号等于多个值的字符串。Javascript,javascript,Javascript,问题是我有两个字符串。一个字符串是字母的随机组合。第二个是a+、*、$或{N}。其中+符号表示所有26个字母,$表示数字1-9,星号表示任何3个重复字符,除非{N}以不同方式显示 例如: 输入:“+CDEHHHHH” 输出:false 输入:“$***{2}”9mmmrrrkbb 输出:真 测试问题我弄错了,只是试着理解答案。我会通过迭代模式并保持一个指针指向我们现在正在检查的字符串中的位置来解决这个问题。这样,您可以根据{N}中的N来或多或少地移动指针(默认为3);在每种情况下,如果字符不在允

问题是我有两个字符串。一个字符串是字母的随机组合。第二个是a+、*、$或{N}。其中+符号表示所有26个字母,$表示数字1-9,星号表示任何3个重复字符,除非{N}以不同方式显示

例如: 输入:“+CDEHHHHH” 输出:false

输入:“$***{2}”9mmmrrrkbb 输出:真


测试问题我弄错了,只是试着理解答案。

我会通过迭代模式并保持一个指针指向我们现在正在检查的字符串中的位置来解决这个问题。这样,您可以根据
{N}
中的N来或多或少地移动指针(默认为3);在每种情况下,如果字符不在允许的集合中,我只返回false,对于*我计算当前字符应重复多少次,并检查下一个
N
字符是否等于
input[x]。重复(N)
(当前字符重复N次)

当然,你也可以用正则表达式来实现这一点,但我真的觉得它会变得更加复杂,因为需要将每个字符转换为类或重复匹配

函数匹配模式(输入,模式){
设x=0;//指向输入字符串的指针
for(设i=0;i=input.length;
}
log(matchPattern(“abcdehhhh”和“+++++*”));

log(匹配模式(“9mmmmrrrkbb”,“$***{2}”)我们可以使用和构造函数将模式字符串转换为正则表达式,然后使用与输入字符串进行比较:

函数re(模式){
设捕获=1;
const source=pattern.replace(
/([+*$])(?:\{(\d+)\})?/g,
(匹配、规则、重复=3)=>{
开关(规则){
大小写“+”:返回“[a-z]”;
大小写“*”:返回“(..\${capture++}{${repeat-1}}”;
大小写“$”:返回“\\d”;
}
}
);
//生成的正则表达式
console.log(源代码);
返回新的RegExp(`^${source}$`);
}
功能比较(输入、模式){
常量结果=re(模式)。测试(输入);
log(“${input}”匹配“${pattern}”:${result}`);
返回结果;
}
比较('abcdehhhh','+++++*');

比较('9mmmmrrrkbb','$***{2}')