^ # Begin of the string
[^[]+ # Match not [ one or more times
[' # Match ['
( # Capture in a group **(group 1)**
[^']+ # Match not a ' one or more times
) # Close capturing group
'] # Match ']
$ # End of the string
第二个正则表达式在一个组中捕获不带^的['']和$之间的内容
var string = "userAllowedCrud['create']";
var pattern1 = /^[^\[]+\['([^']+)']$/;
var pattern2 = /\['([^']+)']/
console.log(string.match(pattern1)[1]);
console.log(string.match(pattern2)[1]);
// for single and double quotes
"userAllowedCrud['create']".match(/\[([^\]]*)\]/)[1].slice(1, -1)
// Or (for single and double quotes):
"userAllowedCrud['create']".match(/\[("|')([^\]]*)\1\]/)[2]
// Or (for single and double quotes):
"userAllowedCrud['create']".match(/\[(["'])([^\]]*)\1\]/)[2]
// Or (for single quotes):
"userAllowedCrud['create']".match(/\['([^\]]*)'\]/)[1]
// Or (for double quotes):
"userAllowedCrud['create']".match(/\['([^\]]*)'\]/)[1]
3条答案
按热度按时间j0pj023g1#
对于示例字符串,您可以使用split,它将返回一个数组并指定单引号
'
作为分隔符。您的值将是数组中的第二项。
如果你想使用正则表达式,你可以用途:
^[^\[]+\['([^']+)']$
或\['([^']+)']
您的值将在组1中
第一个正则表达式将匹配:
第二个正则表达式在一个组中捕获不带
^
的['']
和$
之间的内容ukdjmx9f2#
你可以使用一个正则表达式,如:
/\[([^\]]*)\]/
。\[
表示匹配[
,\]
表示匹配]
,[^\]]*
表示匹配0个或多个非右括号的字符。如果您需要括号内的引号内的内容,有许多解决方案,例如:
还有很多其他的方法,这些只是其中的几个。我建议学习regex:https://stackoverflow.com/a/2759417/3533202
ocebsuys3#
尝试使用JavaScript字符串操作