簡體   English   中英

Javascript Regex只匹配一次出現,不多也不少

[英]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;

您可以結合使用indexOflastIndexOf

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

http://jsfiddle.net/cSF8T/

非常規,但它有效。 它不操作字符串或使用正則表達式。

 // 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM