Php 如何使用Jquery拆分像45frank这样的字符串

Php 如何使用Jquery拆分像45frank这样的字符串,php,jquery,regex,Php,Jquery,Regex,我在我的站点中有一个部分使用复选框显示隐藏信息div onclick。 我需要能够切换一个继续按钮以及隐藏的div(显示/隐藏)或(切换),同时收集字符串前面的2位数字,作为添加到购物车时的ID。我想可能是带有reg exp的jquery split()函数。我如何拆分像45frank这样的字符串,所以它应该是id=45和val=frank这样的字符串 var str = "45frank"; var parts = str.match(/(\d+)(\D+)/).slice(1); 这假定

我在我的站点中有一个部分使用复选框显示隐藏信息div onclick。 我需要能够切换一个继续按钮以及隐藏的div(显示/隐藏)或(切换),同时收集字符串前面的2位数字,作为添加到购物车时的ID。我想可能是带有reg exp的jquery split()函数。我如何拆分像45frank这样的字符串,所以它应该是id=45和val=frank这样的字符串

var str = "45frank";

var parts = str.match(/(\d+)(\D+)/).slice(1);
这假定第二部分不包含任何数字

它返回一个数组:

["45", "frank"]
如果第二部分可能有数字,您可以这样做:

var str = "45fr9ank";

var parts = str.match(/(\d+)(\D.+)/).slice(1);
导致:

["45", "fr9ank"]
然后只需添加所需的文本:

parts[0] = "id=" + parts[0]
parts[1] = "val=" + parts[1]

或者,如果您想要单个字符串结果(我无法从问题中判断),您可以这样做:

var str = "45fr9ank";

str = str.replace(/(\d+)(\D.+)/,function(str,s1,s2){ 
             return "id=" + s1 + " val=" + s2; 
});
结果:

"id=45 val=fr9ank"
这里没有理由使用jQuery或正则表达式。这仅在数字始终为两位数时有效

如果您忘记了它是“45#Frank”,那么您可以使用

var id = string.split("#")[0];
var val = string.split("#")[1];

由于性能问题,我尽量不经常使用reg exp。如果字符串的格式为2位数,则为一组字符。您可以尝试以数组的形式访问字符串。不幸的是IE不支持这个。但我有一项工作,基本上是将字符串转换成数组,访问前两位并撤消它。只需使用javascript内置函数,我相信它是.split()。不幸的是,我现在身上没有密码

但基本上是将字符串转换为数组。访问数字的[0]和[1]。从[2]到。。。字符串长度减1将是您的字符字符串。您可以使用另一个javascript内置函数再次将数组转换回字符串。之所以如此疯狂,是因为IE不支持像数组一样访问字符串


我就是这样做的。或者只需使用HTML5自定义属性data-,将信息分开放置

最好像“45_frank”那样拆分id,后者更容易解析。不幸的是,我正在使用一个现有的系统,并且VAR已经设置好了,我会使用45_frank格式,这就是我问这个问题的原因。感谢您对replace中回调函数示例的快速响应+1。我没有意识到这种可能性。谢谢你的回复,这正是我所需要的:)提到
\D
是一个非数字<代码>\d作为一个数字是不言自明的。感谢您的回复,但是数字部分是一个自动递增的DB字段,因此它可能会增长到3位。对于我提供的有限信息,您的回复是正确的。。再次感谢
var id = string.split("#")[0];
var val = string.split("#")[1];