简体   繁体   中英

What RegEx would clean up this set of inputs?

I'm trying to figure out a RegEx that would match the following:

.../string-with-no-spaces -> string-with-no-spaces

or

string-with-no-spaces:... -> string-with-no-spaces

or

.../string-with-no-spaces:... -> string-with-no-spaces

where ... can be anything in these example strings:

example.com:8080/string-with-no-spaces:latest
string-with-no-spaces:latest
example.com:8080/string-with-no-spaces
string-with-no-spaces

and a bonus would be

http://example.com:8080/string-with-no-spaces:latest

and all would match string-with-no-spaces .

Is it possible for a single RegEx to cover all those cases?

So far I've gotten as far as /\\/.+(?=:)/ but that not only includes the slash, but only works for case 3. Any ideas?

Edit: Also I should mention that I'm using Node.js, so ideally the solution should pass all of these: https://jsfiddle.net/ys0znLef/

怎么样:

(?:.*/)?([^/:\s]+)(?::.*|$)

Here's the expression I've got... just trying to tweak to use the slash but not include it.

Updated result works in JS

\S([a-zA-Z0-9.:/\-]+)\S
//works on regexr, regex storm, & regex101 - tested with a local html file to confirm JS matches strings

var re = /\S([a-zA-Z0-9.:/\-]+)\S/;

Consider the following solution using specific regex pattern and String.match function:

var re = /(?:[/]|^)([^/:.]+?)(?:[:][^/]|$)/,
    // (?:[/]|^) - passive group, checks if the needed string is preceded by '/' or is at start of the text
    // (?:[:][^/]|$) - passive group, checks if the needed string is followed by ':' or is at the end of the text
    searchString = function(str){
        var result = str.match(re);
        return result[1];
    };

console.log(searchString("example.com:8080/string-with-no-spaces"));
console.log(searchString("string-with-no-spaces:latest"));
console.log(searchString("string-with-no-spaces"));
console.log(searchString("http://example.com:8080/string-with-no-spaces:latest"));

The output for all the cases above will be string-with-no-spaces

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM