[英]Javascript Regex to match only a single occurrence no more or less
我有一個像下面這樣的字符串:
single-hyphen
我需要匹配連字符。 但是,我只想匹配一次出現的連字符,不多也不少。
所以上面的字符串將返回true,但下面的兩個將是false:
1. a-double-hyphen
2. nohyphen
我如何定義一個正則表達式來做到這一點?
提前致謝。
你可以這樣做
/^[^-]+-[^-]+$/
^
描述字符串的開始
$
表示字符串的結尾
[^-]+
匹配 1 到多個字符,除了-
/^[^-]*-[^-]*$/
字符串的開頭、任意數量的非連字符、一個連字符、任意數量的非連字符、字符串的結尾。
奇怪(而不是 Regex )......但為什么不呢?
2 === str.split("-").length;
您可以結合使用indexOf
和lastIndexOf
:
String.prototype.hasOne = function (character) {
var first = this.indexOf(character);
var last = this.lastIndexOf(character);
return first !== -1 &&
first === last;
};
'single-hyphen'.hasOne('-'); // true
'a-double-hyphen'.hasOne('-'); // first !== last, false
'nohyphen'.hasOne('-'); // first === -1, false
非常規,但它有效。 它不操作字符串或使用正則表達式。
// only true if only one occurrence of - exists in string
(str.indexOf("-") + 1) % ( str.lastIndexOf("-") + 1 ) === 0
在這里擺弄
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.