web-dev-qa-db-ja.com

最初と最後に空白がないRegEx

文字列の最初と最後の空白を許可せず、文字列の途中を許可する式を設計したいと思います。

私が試した正規表現はこれです:

\^[^\s][a-z\sA-Z\s0-9\s-()][^\s$]\
9
pratik

これはうまくいくはずです:

^[^\s]+(\s+[^\s]+)*$

文字制限を含める場合:

^[-a-zA-Z0-9-()]+(\s+[-a-zA-Z0-9-()]+)*$

説明:

開始^および末尾$は文字列を示します。

私が与えた最初の正規表現を考えると、[^\s] 手段 not whitespace。だから、あなたが見てみると、私はnot whitespace最初はallow whitespace真ん中と別のnot whitespace 最後に。

最初と最後で受け入れる文字を制限したい場合は、2番目の正規表現を参照してください。最初と最後にa-z、A-Z、0-9、()を許可しました。これらだけが許可されます。

正規表現の遊び場: http://www.regexr.com/

8
war1oc

このRegExは、文字列/ Wordの最初と最後に空白を許可しません。

^[^\s].+[^\s]$

空白で始まらない、または終わらない文字列はすべて照合されます。

説明:

  1. ^は文字列の始まりを示します。
  2. \sは空白を表すので、[^\s]NOT white-spaceを表します。または、\Sを使用して同じことを示すこともできます。
  3. .は、改行を予期する任意の文字を示します。
  4. +は、-1回以上を示す数量詞です。つまり、+が後に続く文字は、何度も繰り返すことができます。

RegExチートシートとして this を使用できます。

3
Madhav Datt

文字列が少なくとも1文字でなければならない場合、途中で改行が他の文字と一緒に許可され、最初と最後の文字が空白(@#$!...を含む)以外の場合は本当に何でもかまいません。ために:

^\S$|^\S[\s\S]*\S$

説明と単体テスト: https://regex101.com/r/uT8z

2
Aprillion
^[^\s].+[^\s]$

それでおしまい!!!!先頭または末尾に空白なしで文字(\ nの一部)を含む文字列を許可します。途中で\ n必要な場合は、置換する必要があるオプション.+ 沿って [.\n]+

1
aidonsnous

pattern = "^ [^\s] + [-a-zA-Z\s] +([-a-zA-Z] +)* $"これは、文字のみを受け入れ、先頭にスペースを入れないようにするのにも役立ちます。空白。

1
Ramya

どうですか:

^\S.+\S$

これは、任意の種類のスペースで開始または終了しない任意の文字列に一致します。

1
Toto

文字と数字を1つのスペースだけで区切ったもの。また、最初と最後にスペースを入れることはできません。

/^[a-z0-9]+( [a-z0-9]+)*$/gi
^[^0-9 ]{1}([a-zA-Z]+\s{1})+[a-zA-Z]+$

-forの間に空白が1つ以下、最初と最後に空白なし.

^[^0-9 ]{1}([a-zA-Z ])+[a-zA-Z]+$

-間に複数の空白がある場合、最初と最後に空白はありません。

0
niraw chawda

最初のスペースと最後のスペースが許可されないように調整したい特定のパターン、たとえば^[a-zA-Z0-9\s()-]+$がある場合は、パターンの先頭にアンカーされた先読みを使用できます。

^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$
 ^^^^^^^^^^^^^^^^^^^^ 

ここに、

JSでは、次の同等の正規表現宣言を使用できます。

var regex = /^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = /^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$/
var regex = new RegExp("^(?!\\s)(?![^]*\\s$)[a-zA-Z0-9\\s()-]+$")
var regex = new RegExp(String.raw`^(?!\s)(?![^]*\s$)[a-zA-Z0-9\s()-]+$`)

改行がないことがわかっている場合は、[\s\S]および[^].に置き換えることができます。

var regex = /^(?!\s)(?!.*\s$)[a-zA-Z0-9\s()-]+$/

---(regexデモ を参照してください。

JSデモ:

var strs = ['a  b c', ' a b b', 'a b c '];
var regex = /^(?!\s)(?![\s\S]*\s$)[a-zA-Z0-9\s()-]+$/;
for (var i=0; i<strs.length; i++){
  console.log('"',strs[i], '"=>', regex.test(strs[i]))
}
0

これは私のために働きました:

^[^\s].+[a-zA-Z]+[a-zA-Z]+$

それが役に立てば幸い。

0
Dhaval Patodiya