【问题标题】:Parsing javascript regex: someString.replace(/^.*,/, '')解析 javascript 正则表达式:someString.replace(/^.*,/, '')
【发布时间】:2017-07-24 10:07:45
【问题描述】:

我最近遇到了一个很棒的 SO thread,它使用 Google App Scripts 将表单中的分段上传保存到 Google Drive。该答案中的一行调用:

.replace(/^.*,/, '')

基于文件上传的 base64 编码表示。我的问题是:这个正则表达式是做什么的?

使用正则表达式解析器,这似乎应该从字符串的开头开始,匹配任何字符任意多次,但这会将整个字符串替换为 '',所以我显然不理解这个简单的操作.如果其他人对此问题有任何见解,我将不胜感激。

【问题讨论】:

    标签: javascript regex string forms multipartform-data


    【解决方案1】:

    它似乎删除了最后一个逗号之前的所有内容。

    ^ 表示“以”开头,.* 表示除新行之外的任何内容出现 0 次或多次,而逗号仅表示逗号。换句话说,这意味着:从字符串的开头开始,查找任意数量的字符,后跟一个逗号。然后将它们替换为空字符串(空字符串)

    【讨论】:

    • 我认为.* 很贪心,所以它会得到最后一个逗号-"hello,there,buddy".replace(/^.*,/, '') --> 'buddy'
    • 哦,我的话我没有看到逗号。谢谢。
    • @user3413723 我有一个额外的问题:你知道为什么要对 base64 编码的数据这样做吗? -- 啊,是文件类型! (例如data:image/png;base64,iVBORw0KGgoAAAAN...
    • @duhaime,它是一个数据 url,在你想要的实际内容之前有一些元数据。所以它只是把它去掉。见:developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/…
    【解决方案2】:

    RegExp 替换了data URLMIME 类型部分。 RegExp 也可以组成为

    var res = str.split(",")[1];
    

    【讨论】:

    • 确实如此!我是一名字符串操作人员,所以我在本地进行了这个确切的更改。谢谢!
    • @duhaime 和base64,如果包含在data URL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2016-04-24
    • 2015-05-30
    相关资源
    最近更新 更多