如何在正则表达式中创建匹配?

时间:2017-02-12 22:06:01

标签: javascript regex regular-language

这是我的字符串。

@DefaultGatekeeper
public class LoggedInGatekeeper implements Gatekeeper {
    private CurrentUser currentUser;
    private PlaceManager placeManager;

    @Inject
    public LoggedInGatekeeper(CurrentUser currentUser, PlaceManager placeManager) {
        this.currentUser = currentUser;
        this.placeManager = placeManager;
    }

    @Override
    public boolean canReveal() {
        PlaceRequest request = placeManager.getCurrentPlaceRequest();
        if (request.hasSameNameToken('someNameToken') {

           return currentUser.isLoggedIn();
        }
        return true;
    }
}

我需要删除所有代码并将br替换为eewer <br> <br/> <div> ss</div> <img src=".."> dffdfdf df df sdf

示例:

\n

eewer <br> <br/> <div> ss</div> <img src=".."> dffdfdf df df sdf

3 个答案:

答案 0 :(得分:3)

如果您想保留\n

&#13;
&#13;
var str = 'eewer <br> <br/> <div> ss</div> <img src=".."> dffdfdf df df sdf';

console.log(str.replace(/(<br>|<br\/>)/g, '\\n').replace(/<[^>]*>/g, ''));
&#13;
&#13;
&#13;

如果您想要断行而不是\n

&#13;
&#13;
var str = 'eewer <br> <br/> <div> ss</div> <img src=".."> dffdfdf df df sdf';

console.log(str.replace(/(<br>|<br\/>)/g, '\n').replace(/<[^>]*>/g, ''));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

首先将所有BR标签替换为:

 /<br\s?\/?>/g

删除其他人:

 /<.*?\n?.*?>/g

或者,如果您的代码可能很复杂且多行(3个或更多):

 /<(.*?\n?){0,}.*?>/g
 /<[^>]*>/g   //is faster as @Zze suggested

所以:

 yourString.replace( /<br\s\/?>/g , '\n' ).replace( /<.*?\n?.*?>/g ,'') ;

注意:替换:

 <br> <br/> <br /> and <br >

答案 2 :(得分:1)

我把它分成2个替换语句,然而在正则表达式上比我更优秀的人可以优化这个...

/(<br[\/]*>)/g捕获您的html换行符。

/<[^>]*>/g捕获所有其他html标记及其内容。

&#13;
&#13;
var string = 'eewer <br> <br/> <div> ss</div> <img src=".."> dffdfdf df df sdf';

console.log(string);
var newString = string.replace(/(<br[\/]*>)/g, "\n");
newString = newString.replace(/<[^>]*>/g, "");
console.log(newString);                              
&#13;
&#13;
&#13;

如果您正在寻求改进正则表达式,http://regexr.com是一个令人惊叹的网站,可以自由使用许多社区示例/备忘单。