Regex equivalent to str.substr(0, str.indexOf('foo')
Regex equivalent to str.substr(0, str.indexOf('foo'))
给定此字符串:
var str = 'A1=B2;C3,D0*E9+F6-';
在这种情况下,我想检索从字符串开头到 'D0*'
(不包括)的子字符串:
'A1=B2;C3,'
我知道如何结合使用substr
和indexOf
方法来实现这一点:
str.substr(0, str.indexOf('D0*'))
现场演示:http://jsfiddle.net/simevidas/XSu22/
但是,这显然不是最好的解决方案,因为它包含冗余(str
名称必须写入两次)。通过将 match
方法与捕获子字符串的正则表达式一起使用,可以避免这种冗余:
str.match(/???/)[1]
我们必须将哪个正则表达式文本传递到match
以确保返回正确的子字符串?
我的猜测是这样的:/(.*)D0'*/
(这有效),但我对正则表达式的经验相当有限,所以我需要确认......
试试这个:
/(.*?)D0'*/.exec(str)[1]
或:
str.match(/(.*?)D0'*/)[1]
在这里演示
?
紧跟在量词之后会使量词不贪婪(使其匹配定义的区间的最小值而不是最大值)。 这是从哪里来的
/^(.+?)D0'*/
在这里试试: http://rubular.com/r/TNTizJLSn9
/^.*(?=D0'*)/
更多文本达到字符限制...
您可以执行数字组,例如您的示例。
/^(.*?)foo/
这意味着一些想法:
- 将所有内容存储在组中,从开始(
0
) - 停止,但不存储在找到的
foo
(indexOf
)
之后,您需要匹配并获得
'hello foo bar foo bar'.match(/^(.*?)foo/)[1]; // will return "hello "
这意味着这将适用于str
变量并获得存在的第一个(也是唯一的)数字组。相反,[0]
[1]
意味着将获得所有匹配的代码。
再见:)
相关文章:
- str.split(someString).join(someOtherString)是否等效于替换
- if(foo!==null)的计算结果为true,即使foo为null
- 渲染<选项值=“;foo”;选择>在服务器上
- 对象中的str.replacement()
- 代码挑战:创建一个跟踪对象实例总数的类Foo
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 为什么“foo()”在这里有效
- 需要一些str.indexOf帮助javascript
- 在包含流的html上用javascript动态替换str
- Template.foo.renderd适用于所有'foo'
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- 调用 foo() 后的 x 和 y 值是什么
- 如何修复JSlint报告的“foo未定义”错误
- “this.foo”总是与“foo.bind(this)”相同吗?
- JavaScript 错误:未捕获类型错误:foo 不是一个函数
- JavaScript:控制台的意外输出.log('str' + int + int)
- 正则表达式如何正确使用来检查 str
- 在这种情况下,“foo[x]”是什么意思?
- $("'" + foo + "'") vs $(foo)
- Regex equivalent to str.substr(0, str.indexOf('foo')