如何在JavaScript中使用正则表达式来捕获两个特定字符之间的文本
How do I use regex in JavaScript to capture the text between two particular characters?
在下面的例子中,我试图捕获两个星号之间的文本。
var str="The *rain in SPAIN* stays mainly in the plain";
var patt1=/'*...'*/;
console.log(str.match(patt1));
我试着以为例
http://www.regular-expressions.info/examples.html
''问。。。''E从字面上匹配''Q和''E之间的字符,抑制特殊字符的含义。
但我在跟随时遇到了问题
尝试
var str="The *rain in SPAIN* stays mainly in the plain";
var patt1=/'*.*'*/;
console.log(str.match(patt1));
'*
表示字面上的"*"字符。那么.
表示任意字符,*
表示任意次数,所以.*
表示"任意字符数"。
可选奖金:
上面的代码应该可以正常工作,但您会注意到它匹配得很好。因此,对于输入abcd*efgh*ijkl*mnop
,输出将是*efgh*ijkl*
,而您可能更喜欢非贪婪匹配*efgh*
。
为此,请使用
var patt1=/'*.*?'*/;
?
运算符表示非贪婪性,并确保吃掉可能到达下一个'*
的最少字符数,而在没有?
的情况下,吃掉最多可能到达下个'*
的字符数。
要了解更多信息,我建议http://www.regular-expressions.info/repeat.html。特别是阅读"懒惰而不是贪婪"部分。
使用.*
和()
捕获组:
var str = "The *rain in SPAIN* stays mainly* in the plain";
var patt1 = /'*(.*)'*/;
console.log(str.match(patt1));
结果:
["*rain in SPAIN* in the plain*", "rain in SPAIN* in the plain"]
如果您使用:
var patt1=/'*([^*]+)'*/;
结果将是:
["*rain in SPAIN*", "rain in SPAIN"]
为什么是三个点?...
var str="The *rain in SPAIN* stays mainly in the plain";
var patt1=/'*.*'*/;
console.log(str.match(patt1));
我不确定你在哪里看到。。。在示例中。一是任意字符的单个实例(通配符。所以,在你的例子中,你需要做的是。。。
var patt1=/'*.*?'*/;
然而,作为结果的一部分,你会得到双方的*。
您正在搜索实际的*
那么你正在搜索任意数量的。(通配符)。。。任何数字,因为*也意味着你找到的数量
但是?意味着如果你遇到下一件事,你应该停止
在你的情况下,这又是一个垃圾。
所以。。。翻译
ASTERISK(任何多次发生的事情,直到另一次发生为止)ASTERISK
相关文章:
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- 使用javascript将两个文本框值相加到表中的另一个文本框中
- 同时在两个文本框上显示光标
- javascript:无法添加两个文本输入
- 识别两个文本中的单词(if 语句在 for 循环中)
- 如何使用HTML5和Javascript同时读取两个文本文件
- 创建选项卡,每个选项卡有两个文本区域
- 两个文本框事件Javascript
- 如何获取javascript中两个文本框之间的天数
- 单击编辑按钮时,如何根据另外两个文本框的条件隐藏或禁用单选按钮列表和文本框
- 如何使用 JavaScript 从两个文本框中删除值
- 如何放置日期范围从周选择器用于两个文本输入
- 如何使用javascript验证两个文本区域
- 在 AngularJs 中同时更新两个文本区域内容不起作用
- 如何使用 jQuery 比较两个文本输入类型框值
- 如何使用 Angular js 计算网格视图项模板文本框值的两个文本框值
- 服务器端表单验证 AJAX,通过比较不同页面上的两个文本框
- 清除两个文本框,并使用 JavaScript 对 TextChanged 或 CheckedChanged 事件进行复选
- 给两个文本框一个使用 Javascript 或 jQuery 填充的相同值
- 如何组合两个文本超链接