我不知道以前是否曾经问过,因为英语不是我的第一语言,我不知道要搜索的关键词。
所以基本上我有以下输入元素,
<input type="email" name="person[0].email" />
我想将名称拆分为3个部分,例如["person", "0", "email"]
。
我尝试使用/(\[[^[\]]])|\./
,但它提供了["person", "[0]", "", undefined, "email"]
。
另外,对于a[0][1].b[3].c
,它应输出["a", "0", "1", "b", "3", "c"]
答案 0 :(得分:5)
您可以使用.match
代替.split
console.log("person[0].email".match(/\w+/g));
&#13;
注意(感谢 @npinti
):如果名称中的_
,我的第一个示例也会匹配_
,所以在这种情况下你需要像这样使用正则表达式
console.log("person[0].email".match(/[A-Za-z0-9]+/g));
&#13;
答案 1 :(得分:1)
好像你想打破任何不是字母或数字的东西,因此你可以使用它:[^A-Za-z0-9]+
。表达式的示例可用here。
答案 2 :(得分:0)
您可以使用此拆分:
var m = person[0].email".split(/[.\[\]]+/g)
//=> ["person", "0", "email"]
OR:
m = "a[0][1].b[3].c".split(/[.\[\]]+/g)
//=> ["a", "0", "1", "b", "3", "c"]
答案 3 :(得分:0)
如果您始终使用以下格式:name[i].prop
,则可以在没有正则表达式的情况下执行此操作:
function splitName(s)
{
var parts1 = s.split('].');
var parts2 = parts1[0].split('[');
return [parts2[0], parts2[1], parts1[1]];
}
document.body.innerHTML += JSON.stringify(splitName('name[i].prop')) + '<br/>';
document.body.innerHTML += JSON.stringify(splitName('person[0].email')) + '<br/>';
document.body.innerHTML += JSON.stringify(splitName('a[0].b')) + '<br/>';
它不太优雅,不是通用的,仅适用于指定的格式。但是,没有正则表达式,如果你只使用这种格式 - 那为什么不呢? :)