假设以下任何字符串都可以使用##, ?? 和 :: 是分隔符...
test1 = 'Foo##Bar'
test2 = 'Foo Bar??Baz Mumbe'
test3 = 'SomeFoo::Some Bar'
test4 = 'Foo Bar Baz'
现在,我想...
- 知道##, ?? 或 :: 匹配,如果匹配,是哪一个
- 捕获分隔符之前和之后的任何内容
字符串操作有效,但看起来太复杂了。
假设以下任何字符串都可以使用##, ?? 和 :: 是分隔符...
test1 = 'Foo##Bar'
test2 = 'Foo Bar??Baz Mumbe'
test3 = 'SomeFoo::Some Bar'
test4 = 'Foo Bar Baz'
现在,我想...
字符串操作有效,但看起来太复杂了。
好的,我想我实际上有点能够构建 RegExp ......
var reg = /(.*)(\#\#|::|\?\?)(.*)/g;
现在,使用 RexExp 的 exec 函数,我得到...
var match = reg.exec('foo bar##baz mumble');
=>match = ["foo bar##baz mumble", "foo bar", "##", "baz mumble"];
你可以使用类似的东西
var m,
before,
after,
delimiter,
test = 'Foo##Bar';
if ( m = test.match( /^(.*?)(##|\?\?|::)(.*)$/ ) ) {
before = m[1];
delimiter = m[2];
after = m[3];
}
分隔符将是先出现的##
,??
或::
。
test1 = 'Foo##Bar'
test2 = 'Foo Bar??Baz Mumbe'
test3 = 'SomeFoo::Some Bar'
test4 = 'Foo Bar Baz'
function match(s){
if(typeof s === "undefined") return "";
var res = /(.*)(##|\?\?|::)(.*)/g.exec(s);
return res;
}
console.log(match(test2)[1]); // before the delimiter
console.log(match(test2)[3]); // after the delimiter