JSFiddle - React, Tailwind, and code Playground
by zeen
HTML
<script src="http://cdn.jsdelivr.net/xregexp/3.0.0pre/xregexp-all.js"></script>
JavaScript
var expr = /\B@\w+\b/ig;
//var expr = XRegExp('\\B(@\\p{L}+)\\b');
function parse(text) {
//var a = expr.exec(text);
return text.match(expr);
//console.log(XRegExp.matchChain(text, [expr]));
//return a ? [expr.exec(text)[1]] : a;
}
var tests = [
{//0
input: "@simpleuser",
result: ["@simpleuser"]
},
{//1
input: "Some @user in text",
result: ["@user"]
},
{//2
input: "Email [email protected]",
result: null
},
{//3
input: "some @user with email [email protected]",
result: ["@user"]
},
{//4
input: "breaked email @email.com",
result: ["@email"]
},
{//5
input: "@several @users here @one more",
result: ["@several", "@users", "@one"]
},
{//6
input: "@user0123 with numbers",
result: ["@user0123"]
},
{//7
input: "[email protected] @user, comma @русское_слово",
result: ["@user", "@русское_слово"]
}
];
for(var i = 0; i < tests.length; i += 1) {
var testResult = parse(tests[i].input);
var expected = tests[i].result;
if ((expected && testResult && testResult.toString() != expected.toString())
|| (expected == null && expected != testResult))
{
throw new Error("test failed: " + testResult);
}
//console.log(i, "passed", testResult);
}
console.log("All passed");