如何获得位于2个引号之间的子字符串?

时间:2012-09-11 09:54:55

标签: javascript jquery regex

我有一个看起来像这样的字符串:“你需要的字是'你好'”。

将'hello'(但没有引号)放入javascript变量的最佳方法是什么?我想这样做的方法是使用正则表达式(我对此知之甚少)?

任何帮助表示赞赏!

4 个答案:

答案 0 :(得分:19)

使用match()

> var s =  "the word you need is 'hello' ";
> s.match(/'([^']+)'/)[1];
"hello"

这将匹配起始',后跟除'之外的任何内容,然后是结束',将所有内容存储在第一个捕获的组中

答案 1 :(得分:11)

使用.split()很简单,(仅)如果您知道索引

var str = "the word you need is 'hello' world";
console.log( str.split(/'/)[1] );

由于.split()将我们的字符串转换为数组,因此使用[1]索引获取确切的密钥:

[
  "the word you need is ",
  "hello",                          // at index 1
  " world"
]

<强>注意:

上述内容将失败,即:it'll fail in 'this' case,其中[1]将为您提供ll fail in而不是预期的this

答案 2 :(得分:0)

http://jsfiddle.net/Bbh6P/

var mystring = "the word you need is 'hello'"
var matches = mystring.match(/\'(.*?)\'/);  //returns array

​alert(matches[1]);​

答案 3 :(得分:0)

如果你想避免使用正则表达式,那么你可以使用.split("'")将字符串拆分为单引号,然后使用jquery.map()返回奇数索引的子字符串,即。所有单引号子串的数组。

var str = "the word you need is 'hello'";
var singleQuoted = $.map(str.split("'"), function(substr, i) {
   return (i % 2) ? substr : null;
});

<强> DEMO

注意

如果原始字符串中出现一个或多个撇号(与单引号相同),则此方法和其他方法会出错。