regex 使用正则表达式从字符串中获取

zpf6vheq  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(131)

我需要从字符串中提取
userAllowedCrud['create']位于[]内部的部分。
我认为使用正则表达式是更好的方法。我说错了吗?

j0pj023g

j0pj023g1#

对于示例字符串,您可以使用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]);
ukdjmx9f

ukdjmx9f2#

你可以使用一个正则表达式,如:/\[([^\]]*)\]/\[表示匹配[\]表示匹配][^\]]*表示匹配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]

还有很多其他的方法,这些只是其中的几个。我建议学习regex:https://stackoverflow.com/a/2759417/3533202

ocebsuys

ocebsuys3#

尝试使用JavaScript字符串操作

let tempString = "userAllowedCrud['create']";
let key = str => str.substring(
    str.indexOf("'") + 1,
    str.lastIndexOf("'")
);
console.log(key(tempString))

相关问题