我在php中使用此代码来检测字符串中的行中是否存在五个相同的符号,并执行一些代码。
function symbolsInRow($string, $limit = 5) {
$regex = '/(.)\1{'.($limit - 1).',}/us';
return 0 == preg_match($regex, $string);
}
现在我需要在javascript中做同样的事情,但不幸的是我对它不够熟悉。如何将此函数转换为javascript?如果函数在给定字符串的行中找到5个相同的符号,则该函数应返回false。
答案 0 :(得分:1)
可能没有正则表达式:
function symbolsInRow(str, limit, symbol){
return str.split(symbol).length === limit + 1;
}
答案 1 :(得分:1)
这应该是等价的:
function symbolsInRow(string, limit) {
limit = (limit || 5) - 1;
return !(new RegExp('(.)\\1{'+limit+'}')).test(string);
}
答案 2 :(得分:1)
你去吧
function symbolsInRow(string, limit) {
// set the parameter to 5 if it is not provided
limit = (limit || 5);
// create a regexp object, initialized with the regex you want. we escape the \ with \\ because it is a special char in javascript strings.
var regex = new RegExp('(.)\\1{'+(limit-1)+',}');
// return false if we find a match (true if no match is found)
return !regex.test(string);
}
如果找到匹配项,实际的test
方法将返回true。请注意!
not
运算符反转测试结果,因为如果找到序列则要返回false。
答案 3 :(得分:0)
对于连续五个区分大小写的字符,这应该有效:
function symbolsInRow(string) {
return /(.)\1{4}/.test(string);
}
如果您需要匹配任意数量的重复:
function symbolsInRow(string,limit) {
return (new RegExp('(.)\\1{'+limit+'}')).test(string);
}