Javascript 用于提取http授权头的正则表达式

Javascript 用于提取http授权头的正则表达式,javascript,regex,Javascript,Regex,标题如下所示: TOKEN client=12345,hash=abcde 我需要检查传输的报头是否与此模式匹配,并提取客户端和散列。如何在vanilla javascript中实现这一点,有什么想法吗?您可以使用: var s = 'TOKEN client=12345,hash=abcde'; var m = s.match(/TOKEN +client=([^,]*),hash=([^,]*)/); // m => ["TOKEN client=12345,hash=abcde",

标题如下所示:

TOKEN client=12345,hash=abcde
我需要检查传输的报头是否与此模式匹配,并提取客户端和散列。如何在vanilla javascript中实现这一点,有什么想法吗?

您可以使用:

var s = 'TOKEN client=12345,hash=abcde';
var m = s.match(/TOKEN +client=([^,]*),hash=([^,]*)/);
// m => ["TOKEN client=12345,hash=abcde", "12345", "abcde"]
// use m[1] and m[2] for your values
或单独:

var m = s.match(/client=([^,]*)/);
var client = m[1];

var m = s.match(/hash=([^,]+)/);
var hash = m[1];

String.match
仅用于检查字符串是否匹配,但不提取值。对于这个I,最好使用
RegExp.exec
方法think@pomeh:检查中的输出和提取值answer@pomeh
String.match
返回与正则表达式匹配的字符串数组,如果找不到,则返回
null
。没错。我确信
String.match
返回类似
true
false
的内容,但事实并非如此。谢谢你的信息@anubhava但令牌也必须检查,s.match(/TOKEN client=([^,]*)、hash=([^,]*)/)是否正确?我有一个更通用和可行的解决方案,但这取决于解决方案需要多大的灵活性?您是否需要支持额外值或更改术语(客户端/哈希)?