我需要从字符串中提取
userAllowedCrud['create']
[]
内的部分。
我认为使用正则表达式是更好的方法。我错了吗?
答案 0 :(得分:1)
对于示例字符串,您可以使用split,它将返回一个数组并指定单引号'
作为分隔符。
您的值将是数组中的第二项。
var string = "userAllowedCrud['create']";
console.log(string.split("'")[1]);
如果你想使用正则表达式,你可以使用:
^[^\[]+\['([^']+)']$
或\['([^']+)']
您的价值将在第1组
第一个正则表达式将匹配:
^ # 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]);
答案 1 :(得分:0)
您可以使用正则表达式:/\[([^\]]*)\]/
。 \[
表示匹配[
,\]
表示匹配]
,[^\]]*
表示匹配0或更多任何非近距离字符。
console.log(
"userAllowedCrud['create']".match(/\[([^\]]*)\]/)[1]
);
// Output:
// 'create'
如果您需要括号内的引号内部有许多解决方案,例如:
// 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]
还有很多其他方法,这些只是少数。 我建议学习正则表达式:https://stackoverflow.com/a/2759417/3533202
答案 2 :(得分:0)
尝试使用javascript字符串操作
let tempString = "userAllowedCrud['create']";
let key = str => str.substring(
str.indexOf("'") + 1,
str.lastIndexOf("'")
);
console.log(key(tempString))