0

假设以下任何字符串都可以使用##, ?? 和 :: 是分隔符...

test1 = 'Foo##Bar'
test2 = 'Foo Bar??Baz Mumbe'
test3 = 'SomeFoo::Some Bar'
test4 = 'Foo Bar Baz'

现在,我想...

  1. 知道##, ?? 或 :: 匹配,如果匹配,是哪一个
  2. 捕获分隔符之前和之后的任何内容

字符串操作有效,但看起来太复杂了。

4

3 回答 3

1

好的,我想我实际上有点能够构建 RegExp ......

var reg = /(.*)(\#\#|::|\?\?)(.*)/g;

例子

现在,使用 RexExp 的 exec 函数,我得到...

var match = reg.exec('foo bar##baz mumble');

=>match = ["foo bar##baz mumble", "foo bar", "##", "baz mumble"];

于 2013-02-10T10:55:57.513 回答
1

你可以使用类似的东西

var m,
    before,
    after,
    delimiter,
    test = 'Foo##Bar';

if ( m = test.match( /^(.*?)(##|\?\?|::)(.*)$/ ) ) {
    before = m[1];
    delimiter = m[2];        
    after = m[3];
}

分隔符将是先出现的##??::

于 2013-02-10T10:59:53.687 回答
0
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
于 2013-02-10T11:01:23.550 回答