Javascript 只从另一个regexp中选择大写字母的regexp
我有这种类型的文本: !D este caro 1 C este descgiderea C1 este alta deschidere Deschiderea de 1C este cu 2C 2D 3 D 1NT 2D 123456P 在文本中的任意位置,选择紧跟[CDH]的数字1C、2C、2D、2D 我只想从上面的序列中选择字母,从1C->only C,从2D only D,依此类推。。。。如何使用regexp实现这一点 le:虽然Bolo的方法确实在RegExr中工作,但在Jquery中似乎没有: 代码如下:Javascript 只从另一个regexp中选择大写字母的regexp,javascript,jquery,regex,Javascript,Jquery,Regex,我有这种类型的文本: !D este caro 1 C este descgiderea C1 este alta deschidere Deschiderea de 1C este cu 2C 2D 3 D 1NT 2D 123456P 在文本中的任意位置,选择紧跟[CDH]的数字1C、2C、2D、2D 我只想从上面的序列中选择字母,从1C->only C,从2D only D,依此类推。。。。如何使用regexp实现这一点 le:虽然Bolo的方法确实在RegExr中工作,但在Jquery中
$(document).ready(function()
{
var de_inlocuit = [/!C/gi, /!D/gi,/!H/gi,/!S/gi,/(?<=[0-9])[CDHS]/g];
var replace = ['<img src="/sites/default/files/c.gif"/>', '<img src="/sites/default/files/d.gif"/>','<img src="/sites/default/files/h.gif"/>','<img src="/sites/default/files/s.gif"/>','test' ];
//<img src="/sites/default/files/c.gif"/>
var i=0;
for (i=0; i < de_inlocuit.length; i++)
{
$('body table tr td').replaceText( de_inlocuit[i], replace[i] );
}
});
如果我删除/?从捕获组中删除数字,则该行为是正常的:
/[0-9]([CDHS])/g
顺便说一下,原始模式与字母和数字之间有空格的字符串不匹配。您可以使用以下选项允许一个可选空间:
/[0-9]\s*([CDHS])/g
第一种选择:使用:
但是,在第二种情况下,您必须获取第一个捕获组的内容,而不是整个匹配,即组1而不是组0。如何执行此操作取决于您使用的编程语言。要使用捕获组,如使用此正则表达式:
/([0-9])([CDHS])/g
…只需将适当编号的组引用插入替换字符串,例如:
"rank=$1, suit=$2"
JavaScript正则表达式不支持lookbehind,所以这种方法不起作用。@Bolo的解决方案在RegExr中工作的原因是因为它是一个Flex应用程序。在类似JavaScript的测试仪中尝试它,您将获得更相关的结果
Adobe宣传其ActionScript正则表达式与JavaScript兼容,并提供了相同的受支持功能列表,但实际上它们的功能要强大得多,因为它由JavaScript提供支持。因此,请注意使用JavaScript测试仪测试JS正则表达式,而不是像RegExr或那样的Flex工具。您还必须确保选择第一个捕获组,而不是第零个整字符串。@Aillyn-我不希望字母和数字之间有任何空格。英语是由default@andrei我是说编程language@Aillyn,oups,显然:D我试图在replacetext函数中的jquery脚本中使用它,我猜是BBO上的桥:-我认为在这种情况下使用零宽度断言没有多大意义,但如果它起作用。。。我只是好奇为什么第二个选项不起作用。我真的不知道如何只显示第一组而不是整个比赛。实际上,我在jquery脚本replacetext函数中使用这个regexp。使用,/[0-9][CDHS]/g进行测试本身不起作用。如果有人向我解释如何只选择第一个,我会很高兴group@Aillyn我也不喜欢过度使用零宽度断言,但在某些编程语言/环境中处理捕获组可能会更困难。@andrei我从未使用过jquery,但我的第一个猜测是:用\1作为替换字符串。
/[0-9]([CDHS])/g
/([0-9])([CDHS])/g
"rank=$1, suit=$2"