我想在下面的字符串中的方括号和逗号中捕获文本。
function AddRecordWithFormCollection(url, callback) {
$.post("/api/Person/AddRecord",JSON.stringify(url) , function (data, status) {
if (status == "success") {
hidePreloader();
unloadDiv("div_operation");
BindTable();
//AddRowTable(data, obj.name, obj.lastname, obj.age);
return callback(data);
} else {
alert("Error in Method [AddRecord]");
hidePreloader();
}
});
我有方括号的正则表达式
$_['text_1'] = 'text_2 %d to %d of %d (%d text)';
但需要两个正则表达式
答案 0 :(得分:2)
您的"/\[[^\]]*\]/"
仅匹配[.[.[..]
等子字符串。
您可以使用
轻松获取值(?|\['([^][]*)']|'([^'\\]*(?:\\.[^'\\]*)*)')
请参阅regex demo,您的值将在第1组中。
$re = "/(?|\\['([^][]*)']|'([^'\\\\]*(?:\\\\.[^'\\\\])*)')/";
$str = "\$_['text_1'] = 'text_2 %d to %d of %d (%d text)';";
preg_match_all($re, $str, $matches);
print_r($matches[1]);
正则表达式包含2个备选项,其中2个捕获组具有索引1,因为使用了分支重置分组(?|..|..)
。 2个替代方案匹配:
\['([^][]*)']
- 一个文字['
,后面跟着]
和[
以外的0个或多个字符,最多']
'([^'\\]*(?:\\.[^'\\]*)*)')
- 单引号内的任何子字符串,可能包含任何转义序列。或者更安全,也允许第一组内的任何[
或]
(例如,如果您有$_['P[O]ST']
,我猜这不太可能):
(?|\['([^']*(?:'(?!])[^']*)*)'\]|'([^'\\]*(?:\\.[^'\\]*)*)')
请参阅another demo