我想匹配星號字符*
但只有當它發生一次。只匹配一個不重複出現的字符與Javascript正則表達式
我曾嘗試:
/\*(?!\*)/g
,檢查前面,看看下一個字符是不星號。這讓我接近,但我需要確保以前的字符也是而不是星號。不幸的是,javascript不支持負面lookbehind。
澄清:
This is an ex*am*ple
應該相互匹配星號,但:
This is an ex**am**ple
不應返回任何比賽的。
在此先感謝
我想匹配星號字符*
但只有當它發生一次。只匹配一個不重複出現的字符與Javascript正則表達式
我曾嘗試:
/\*(?!\*)/g
,檢查前面,看看下一個字符是不星號。這讓我接近,但我需要確保以前的字符也是而不是星號。不幸的是,javascript不支持負面lookbehind。
澄清:
This is an ex*am*ple
應該相互匹配星號,但:
This is an ex**am**ple
不應返回任何比賽的。
在此先感謝
var r = /(^|[^*])(\*)([^*]|$)/;
r.test('This is an ex*am*ple'); // true
r.test('This is an ex**am**ple'); // false
r.test('*This is an example'); // true
r.test('This is an example*'); // true
r.test('*'); // true
r.test('**'); // false
在所有情況下,匹配星號是捕獲組2.
對於一個完整的解決方案,而不是使用正則表達式:
function findAllSingleChar(str, chr) {
var matches = [], ii;
for (ii = 0; ii < str.length; ii++) {
if (str[ii-1] !== chr && str[ii] === chr && str[ii+1] !== chr) {
matches.push(ii);
}
}
return matches.length ? matches : false;
}
findAllSingleChar('This is an ex*am*ple', '*'); // [13, 16]
findAllSingleChar('This is an ex**am**ple', '*'); // false
findAllSingleChar('*This is an example', '*'); // [0]
findAllSingleChar('This is an example*', '*'); // [18]
findAllSingleChar('*', '*'); // [0]
findAllSingleChar('**', '*'); // false
你想只匹配星號字符,還是提取一個足夠的組?請注意,即使支持該語法,您的嘗試也不起作用。 – OrangeDog
我只想匹配星號。該嘗試僅檢查前進,以查看下一個字符是否爲星號,但不會嘗試向後檢查,這是我相信我需要做的。 – Gordo
這不可能通過單個正則表達式來執行。 – OrangeDog