正则表达式搜索javascript

时间:2010-11-18 14:38:35

标签: php javascript regex

我在php中使用此代码来检测字符串中的行中是否存在五个相同的符号,并执行一些代码。

function symbolsInRow($string, $limit = 5) {
    $regex = '/(.)\1{'.($limit - 1).',}/us';
    return 0 == preg_match($regex, $string);
}

现在我需要在javascript中做同样的事情,但不幸的是我对它不够熟悉。如何将此函数转换为javascript?如果函数在给定字符串的行中找到5个相同的符号,则该函数应返回false。

4 个答案:

答案 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。

示例http://www.jsfiddle.net/gaby/aPTAb/

答案 3 :(得分:0)

对于连续五个区分大小写的字符,这应该有效:

function symbolsInRow(string) {
  return /(.)\1{4}/.test(string);
}

如果您需要匹配任意数量的重复:

function symbolsInRow(string,limit) {
  return (new RegExp('(.)\\1{'+limit+'}')).test(string);
}