【问题标题】:Get Substring between two characters in javascript获取javascript中两个字符之间的子字符串
【发布时间】:2014-04-02 04:28:18
【问题描述】:

在搜索了 SO 和其他文章(全部内容)之后几天,我问了一个关于仅使用 Javascript 在两个字符之间获取 数字 的问题。但不幸的是,我想从仅使用 javascript 的字符串中获取 substring 而不仅仅是数字。我有这个字符串

var str = 'a:7:{i:0;s:1:"1";i:1;s:12:"John Smith";i:2;s:19:"My Life Begins Here";i:3;s:31:"This is my .Picture.jpg";i:4;s:10:"1988-07-26";}'

以及仅从字符串中获取数字的解决方案,效果很好

str.match(/"\d+"/g).join().replace(/"/g,'');

但是如果我们需要获取子字符串,这不起作用,我尝试从正则表达式中删除 \d 但这不起作用。

我做错了什么?这个的输出可以是这样的

 //An array like this
 array = ['1','John Smith', 'My Life Begins Here', 'This is my .Picture.jpg', '1988-07-26'];

实际上,上面的字符串是存储在 MemcacheD 中的 PHP 数组,我在 Node.JS 中检索它,这就是为什么我不能使用 json_encode 左右。我不擅长正则表达式。所以专家们请多多指教。

【问题讨论】:

  • 没有@RobSedgwick 那是不同的我试过了
  • 你在找什么子串?
  • RegEx 不具备正确解析此信息所需的能力,原因相同 you cannot parse HTML with RegEx
  • 序列化的数据可以包含多个层(数组中的数组),而 RegEx 根本无法处理。它还可以在字符串中包含可能被 RegEx 解释为字符串分隔符的字符,但情况可能并非如此。此外,RegEx 将所有内容都视为字符串,甚至是数字,但情况可能也并非如此。它在 JavaScript 中特别重要,因为 1+1 是 2,而“1”+1 是 11。

标签: javascript php regex json arr


【解决方案1】:

像这样?它仍然会被转义的 \" 字符打破。

str.match(/".*?"/g).map(function(str) {
  return str.substring(1, str.length - 1);
});

【讨论】:

  • 是的,但子字符串应该在 ' ' 中,并且你的正则表达式会删除一件事。从像This is my .Picture.jpg 这样的子字符串变成This is my Picture
  • 不,它不会删除点
  • 感谢您的帮助,但您的正则表达式给出的是 '1'、'John Smith'、'My Life Begins Here'、'This is my Picture'、'1988-07-26'跨度>
  • 你确定你测试的字符串和例子中的一样吗?
  • 天哪!我的错。非常感谢 Sabof 非常感谢。
猜你喜欢
  • 1970-01-01
  • 2018-09-22
  • 2013-01-29
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 2013-09-12
  • 2015-06-24
  • 1970-01-01
相关资源
最近更新 更多