1

正規表現の単語数を書き込もうとしていますが、見つけた例のほとんどは、次の状況の一部しかカバーしていません。

  1. こんにちは、あります= 2語である必要があります(コンマの後にスペースがないことに注意してください)
  2. こんにちは、2つの単語が必要です(コンマの前後のスペースに注意してください)
  3. $ 10,000=1ワードにする必要があります
  4. こんにちは ?= 2語にする必要があります(疑問符の前のスペースに注意してください)
  5. こんにちは-あります=2語である必要があります
  6. http://www.google.com=1ワードである必要があります
  7. http://www.google.com/analytics=1ワードである必要があります

私は現在jqueryで次のコードを使用しています

var total_words = $.trim($("#mytextbox").value).split(/[\s\-\.\\\/\?\!]+/).length

ただし、状況#3と#5のみを対象としています。

URLをカバーすることは、私にとってそれほど優先事項ではありません。

どんな助けでもいただければ幸いです!

4

2 に答える 2

0

次の正規表現は、すべての例で機能します。

var total_words = /(\b(https?|ftp):\/\/([\-A-Z0-9.]+)(\/[\-A-Z0-9+&@#\/%=~_|!:,.;]*)?(\?[A-Z0-9+&@‌​#\/%=~_|!:,.;]*)?)|[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?|(&)|('\w+)|(\w+'‌​\w+)|(\w+')|(\w+)/gi

この正規表現は、JSoft から JavaScript に変換されました。

(\b((?#protocol)https?|ftp)://((?#domain)[-A-Z0-9.]+)((?#file)/[-A-Z0-9+&@#/%=~_|!:,.;]*)?((?#parameters)\?[A-Z0-9+&@#/%=~_|!:,.;]*)?)|[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?|\w+

この最初のセクションでは、url タイプのアイテムを定義します。

(\b((?#protocol)https?|ftp)://((?#domain)[-A-Z0-9.]+)((?#file)/[-A-Z0-9+&@#/%=~_|!:,.;]*)?((?#parameters)\?[A-Z0-9+&@#/%=~_|!:,.;]*)?)

セクション セクションは、小数点ありまたはなしの通貨用です。

[+-]?[0-9]{1,3}(?:,?[0-9]{3})*(?:\.[0-9]{2})?

最後に、3 番目のセクションは単語に一致します。

\w+
于 2013-02-01T19:12:15.387 に答える
0

javascripts 正規表現エンジンは左から右に評価するため、より具体的な正規表現を指定し、最後により一般的な正規表現を指定できます

\b(https?://\S+|\d+(,\d+)+|\w+)\b 
   ------------  --------- ---
         |           |      |->general
         |           |->less specific
         |->more specific regex
于 2013-02-01T19:12:28.883 に答える