JavaScript正则表达式过滤两个字符之间的文本[重复]

Posted

技术标签:

【中文标题】JavaScript正则表达式过滤两个字符之间的文本[重复]【英文标题】:JavaScript Regex to filter text between two characters [duplicate] 【发布时间】:2020-01-21 01:05:49 【问题描述】:

我需要使用Regex javascript从字符串中过滤下面的文本:

文字:'http://www.mywebsiteameW1234.com'

应该只返回:mywebsitename

所以在字符点之间只有小写字母:

我的尝试只是返回:mywebsitenameW1234 应该删除数字:

let text = 'http://www.mywebsitenameW1234.com'
console.log(text.match(/(?<=\.)(.*)(?=\.)/gm)[0])

我尝试了几种方法来尝试过滤而不是 (.*) 放置类似 ([a-z]+) 但总是返回 null。

我做错了什么?为什么我不能在组之间添加这些过滤器向前/向后等等?

【问题讨论】:

【参考方案1】:

例如,一个表达式是:

https?:\/\/(?:www\.)?([a-z]+).*

左边界。

Demo 1


另一个是,

([a-z]+)[^a-z\r\n]*\.[a-z]2,6$

Demo 2

它是右边界的,如果有必要,你也可以对其进行双重绑定。


或者使用环视,一种选择是,

[a-z]+(?=[^a-z\r\n]*\.[a-z]2,6$)

Demo 3

const regex = /https?:\/\/(?:www\.)?([a-z]+).*/gm;
const str = `http://www.mywebsiteameW1234.com`;
const subst = `$1`;

const result = str.replace(regex, subst);

console.log(result);

如果您希望简化/修改/探索表达式,在regex101.com 的右上角面板中已对此进行了说明。如果您愿意,您还可以在 this link 中观看它如何与一些示例输入匹配。


正则表达式电路

jex.im 可视化正则表达式:

【讨论】:

【参考方案2】:

这个怎么样。

[a-z]* 表达式确保它只匹配字符串中第一个点之后的小写字母。

let text = 'http://www.mywebsitenameW1234.com'
console.log(text.match(/(?<=\.)[a-z]*/gm)[0])

【讨论】:

以上是关于JavaScript正则表达式过滤两个字符之间的文本[重复]的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript正则表达式

在javascript 中,如何正确的使用,正则表达式, 过滤特殊字符(非字母表中的字符[a-zA-Z0-9])

grep及正则表达式

javascript正则表达式

正则表达式在Javascript中获取括号之间的字符串

grep及正则表达式