Javascript 计算jQuery中的正则表达式匹配数

Javascript 计算jQuery中的正则表达式匹配数,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我需要计算动态加载的中使用load()函数加载的一组正则表达式。我还需要将此调整为其中最长的字符行。有没有办法做到这一点?我试着四处搜索,但什么也找不到,即使是这样。我应该提到,我测试的表达式是: Sat Mar 12 12:45:38 PST 2011 使用此正则表达式: if ($('#result').text().match(/[A-Za-z]{3}\s[A-Za-z]{3}\s[0-9]{1,2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\s[A-Z]{3}\s[0-9

我需要计算动态加载的
中使用load()函数加载的一组正则表达式。我还需要将此
调整为其中最长的字符行。有没有办法做到这一点?我试着四处搜索,但什么也找不到,即使是这样。我应该提到,我测试的表达式是:

Sat Mar 12 12:45:38 PST 2011
使用此正则表达式:

if ($('#result').text().match(/[A-Za-z]{3}\s[A-Za-z]{3}\s[0-9]{1,2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\s[A-Z]{3}\s[0-9]{4}/))
JavaScript match regex函数返回一个数组,因此基本上可以对该数组进行长度计算,并获得匹配元素的大小。确保使用正则表达式中的
g
搜索所有事件

根据您的正则表达式,您可以执行以下操作:

$('#result').text().match(/[A-Za-z]{3}\s[A-Za-z]{3}\s[0-9]{1,2}\s[0-9]{2}:[0-9]{2}:[0-9]{2}\s[A-Z]{3}\s[0-9]{4}/g).length //this should give you the total count of occurance

kjy112给了你答案。正如回答澄清的那样,这不是真正的jQuery,而是Javascript正则表达式(所以可能这会中断您的搜索)

如果该正则表达式的速度很慢(如果返回许多日期,可能会很慢),则只需计算一些nique组件,例如年份:

$('#result').text().match(/\d{4}/).length
马尔夫

我想到了3种获得字符串宽度的方法。我先看一下这些,然后看如何得到最长的长度。看起来其他人已经解决了正则表达式的问题

1) (fastest)
如果只有文本本身需要一定的宽度,而不是div,那么可以使用空格:nowrap来确保文本保持全宽

$('div.someClass').css('whiteSpace','nowrap');




2) (slowest)
如果需要字符串的像素宽度来设置另一个div的宽度,一种方法是创建包含该字符串的元素并使用上面的css属性。例如:

var yourString = 'your string';
// create a div containing your string
var $tempDiv = jQuery('<div style="visibility:hidden;position:absolute;white-space:nowrap">'+jQuery.trim(yourString)+'</div>').appendTo('body');
$newDiv = <your new div, however you're creating it>;
// set the width of the new div to the width of the temp div
$newDiv.width($tempDiv.width());
// and clean up;
$tempDiv.remove();
//repeat as necessary




3) (quite fast too)
var-yourString='yourString';
//创建一个包含字符串的div
var$tempDiv=jQuery(“”+jQuery.trim(yourString)+“”).appendTo('body');

$newDiv=你试过谷歌吗?谢谢,你知道如何动态调整
的大小吗?另外,我需要获取两个匹配之间的内容。最好的方法是什么?@malfy您可以使用javascript设置div的宽度和高度。您是否正在尝试获取标记之间的内容?像这样的?我只想将
调整为最大字符串的宽度。我也不想使用PHP,我需要知道Javascript函数和方法。如果没有匹配,它会给出JS异常,对吗?您的最终解决方案很好,但有点错误,我不得不修改您的代码,因为代码中有未定义的变量名,并且一些变量名混淆了。此外,现在我有了字符中最长的一行(这对我来说很容易做到),真正的问题是如何将我的
设置为该长度?px不会很好地工作,em、ex或pt也不会。另外,我认为创建一个新的
来填充一个旧的方法是一种不好的做法。你是对的。最后一个解决方案很时髦。这就是我在凌晨1点发布而没有先测试代码的结果我将在一秒钟内修复它。关于“如何将我的div设置为该长度?”。。我不知道如何回答这个问题。如果您没有使用px或em、ex、pts,剩下什么。。也许%?你能给我一个从用户角度看成功的例子吗?Re好的/坏的做法:我希望提供一个起点。在不常见的情况下,工作解决方案通常对我来说已经足够好了。如果您知道更好的实践来改进这些,那就太好了!很简单。假设我们有一个字符串aaaaa,
大纲应该如下所示:|aaaaaa | div是块元素,默认情况下占100%的宽度,因为它们用于分隔垂直页面部分。跨距是内联元素,可以像您所寻找的那样自动调整大小。如果您想让div这样做,您必须像上面提到的那样手动设置它们的宽度。这可能有助于:
var yourString = 'your string';
// create a div containing your string
var $tempDiv = jQuery('<div style="visibility:hidden;position:absolute;white-space:nowrap">'+jQuery.trim(yourString)+'</div>').appendTo('body');
$newDiv = <your new div, however you're creating it>;
// set the width of the new div to the width of the temp div
$newDiv.width($tempDiv.width());
// and clean up;
$tempDiv.remove();
//repeat as necessary




3) (quite fast too)
var $tempDiv = $('<div style="visibility:hidden;margin:0;padding:0;border:0;">z</div>').appendTo('body');
//(any character will work. z is just for example); 
var reusableCharacterWidth=$tempDiv.width();
$tempDiv.remove();

var firstString = your string';
// set the width of your first div
$newDiv.width(reusableCharacterWidth*firstString.length);
var nextString = 'your next string';
// set the width of your next div
$nextNewDiv.width(reusableCharacterWidth*nextString.length);
var longestLineLength,
    yourText= 'your text here';
function getLongestLineLength(lines){
    var oneLineLength,
        longest=0,
        linesArray = lines.split('\n');
    for(var i=0,len=linesArray.length;i<len;i++){
        oneLineLength=linesArray[i].length;
        longest=oneLineLength>longest?oneLineLength:longest;
    }
  return longest;
}
longestLineLength = getLongestLineLength(yourText);