匹配以前缀开头的子字符串
Match substring that start with prefix
我被一个小正则表达式卡住了我正在尝试使用正则表达式匹配以给定前缀开头的每个子字符串在javascript 中
prefix = "pre-"
regex = /???/
"pre-foo-bar bar pre-bar barfoo".replace(regex, '')
// should output "bar barfoo"
/'bpre-'S*'s?/g
可以工作,假设您也想去掉尾部空间(根据您的示例(。如果要保留,请使用/'bpre-'S*/g
校正
'b
只查找单词字符,而-
绝对不是单词字符。不幸的是,JavaScript不支持自定义lookbehinds。
/('s|^)pre-'S*/g
应该可以工作,但与上面给出的示例输出相比,将有一个领先的空间。这将检查"pre-"前面是否没有或有空格字符,后面是否有0个或多个非空格字符。它删除了除空格之外的整个块。如果空间对你来说真的很重要,你可以这样做:
str.replace(/('s|^)pre-'S*'s?/g, function(wholeString, optionalSpaceCharacter) {
return optionalSpaceCharacter;
});
第二次校正
如果你连续有两个,比如"pre-a pre-b pre-c",我给你的复杂替换是行不通的。你最终会得到"pre-b "
,因为最后是's?
。要获得确切的所需输出,最好使用/('s|^)pre-'S*/g
并检查原始字符串是否以"pre-"开头。如果是,只需从开头删除一个空格。
str.replace(/('s|^)pre-'S*/g, '').substring(str.substring(0, 4) == "pre-" ? 1 : 0);
var str = 'pre-foo-bar f-pre-foo-bar bar pre-pre pre-bar barfoopre- pre-a pre-b pre-c';
str = str.replace(/(^|'s+)pre-'S*(?='s+|$)/g, '$1');
document.write('<pre>' + str + '</pre>');
http://jsfiddle.net/qTADZ/5/
我们寻找以空格开头或位于字符串(^|'s)
开头的字符串,该字符串必须以pre-
开头,并且我们获取所有后面跟着一个或多个空格的非空格字符或字符串'S*(?='s+|$)
的末尾。我们删除了除了字符串$1
(引用(^|'s)
(的初始空格/开头之外的所有内容
使用此
var string = 'pre-foo-bar bar pre-bar barfoo';
string.replace(/pre-['w'S]+/ig,'');
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 如何删除字符串开头和结尾的换行符
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 我可以选择所有属性名称(而不是值)以某个字符串开头的元素吗
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在jquery中选择id以字符串开头的元素
- 获取DOM中属性名称以某个字符串开头的所有HTML元素
- 如何匹配字符串开头的数字
- 为所有以特定字符串开头的变量赋值
- 正则表达式,用于匹配字符串开头的协议相对 URL
- 在 JavaScript 中按字符串开头或单个字符进行匹配
- REGEX 检查字符串开头或结尾的字符
- 如何在 javascript 中检查字符串开头是否有空格
- 正则表达式匹配:字符串开头不包含字符
- 如何从字符串开头获得与正则表达式的匹配项
- 如何检查 JavaScript 对象是否具有以特定字符串开头的属性名称
- Web 视图中字符串开头和结尾的像素偏移量 (x,y)
- JS获取以字符串开头键的对象值