【问题标题】:JS how do I select a string from between two special characters?JS如何从两个特殊字符之间选择一个字符串?
【发布时间】:2017-01-25 22:04:57
【问题描述】:

我有一个字符串,其格式类似于___<test@email.com>____,其中下划线是我不需要但长度不同的无关内容。我需要选择并存储括号之间的内容。

我的问题是我见过的所有子字符串解决方案都是在字符串中的硬整数位置操作的。但是我要选择的子字符串(括号)的开头和结尾永远不会相同。

所以我想如果我可以使用一些东西来找到括号的位置,然后将其提供给一个可行的子字符串解决方案。但是我发现的所有识别特殊字符的方法都只报告是否有特殊字符,而不是它们在哪里。

提前致谢!

【问题讨论】:

  • 使用正则表达式,它们是此类问题的最佳解决方案
  • 具体来说,使用正则表达式的捕获组对于这种“字符串提取”非常有用
  • 谢谢你完全正确

标签: javascript string substring


【解决方案1】:

基于this answer

var text = '___<test@email.com>____';

var values = text.split(/[<>]+/);

console.log(values); // your values should be at indexes 1, 3, 5, etc...

【讨论】:

  • 我发现像我这样的正则表达式通常比较慢,但是,谁知道呢。无论哪种方式,很好的答案。
【解决方案2】:

这里有一个正则表达式,应该可以帮助你。

let string = "asdf asdf asdf as <thing@stuff.com> jl;kj;l kj ;lkj ;lk j;lk";
let myMatches = string.match(/<.*>/g);
let myMatch = myMatches[0].slice(1).slice(0,-1);

.match 函数返回一个匹配数组,因此您可以找到多个 &lt;stuff&gt; 条目。

可能有一种方法可以不用切片,但我现在只有这些。

【讨论】:

  • 谢谢!我听说过正则表达式,但直到现在才使用它们!
【解决方案3】:

使用正则表达式:

var myRe = /<(.*)>/g;
var myArray = myRe.exec("____<asdf>___");
if (myArray)
    console.log(myArray[1]);

正则表达式测试here

JSFiddle 测试here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    • 2020-03-27
    • 2013-12-31
    • 1970-01-01
    相关资源
    最近更新 更多