次の文字列のいずれかが ##、?? で可能であると仮定します。および::区切り文字です...
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'
今、私はしたい...
文字列操作は機能しますが、複雑すぎるように見えます。
あなたは次のようなものを使うことができます
var m,
before,
after,
delimiter,
test = 'Foo##Bar';
if ( m = test.match( /^(.*?)(##|\?\?|::)(.*)$/ ) ) {
before = m[1];
delimiter = m[2];
after = m[3];
}
区切り文字は、最初##
に発生する??
か、のいずれかになります::
。
わかりました、私は実際に正規表現を構築することがいくらかできると思います...
var reg = /(.*)(\#\#|::|\?\?)(.*)/g;
さて、RexExpのexec関数を使用すると、次のようになります...
var match = reg.exec('foo bar##baz mumble');
=>match = ["foo bar##baz mumble", "foo bar", "##", "baz mumble"];
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