Làm cách nào tôi có thể loại bỏ tất cả dấu chấm câu từ một chuỗi trong JavaScript bằng regex?


152

Nếu tôi có một chuỗi với bất kỳ loại ký tự không chữ và số nào trong đó:

"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"

Làm cách nào tôi có được phiên bản không có dấu chấm câu trong JavaScript:

"This is an example of a string with punctuation"

Câu trả lời:


210

Nếu bạn muốn xóa dấu câu cụ thể khỏi chuỗi, có lẽ tốt nhất là xóa chính xác những gì bạn muốn

replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"")

Làm như trên vẫn không trả về chuỗi như bạn đã chỉ định. Nếu bạn muốn xóa bất kỳ khoảng trắng thừa nào còn sót lại để xóa dấu chấm câu điên, thì bạn sẽ muốn làm một cái gì đó như

replace(/\s{2,}/g," ");

Ví dụ đầy đủ của tôi:

var s = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var punctuationless = s.replace(/[.,\/#!$%\^&\*;:{}=\-_`~()]/g,"");
var finalString = punctuationless.replace(/\s{2,}/g," ");

Kết quả chạy mã trong bảng điều khiển firebird:

văn bản thay thế


4
Các dấu ngoặc nhọn trong regex áp dụng bộ định lượng cho phần trước, vì vậy trong trường hợp này, nó thay thế từ 2 đến 100 ký tự khoảng trắng ( \s) bằng một khoảng trắng . Nếu bạn muốn thu gọn bất kỳ số lượng ký tự khoảng trắng nào thành một, bạn sẽ bỏ giới hạn trên như vậy : replace(/\s{2,}/g, ' ').
Mike Partridge

13
Tôi đã thêm một vài ký tự vào danh sách dấu chấm câu được thay thế ( @+?><[]+) : replace(/[\.,-\/#!$%\^&\*;:{}=\-_`~()@\+\?><\[\]\+]/g, ''). Nếu bất cứ ai đang tìm kiếm một bộ chưa hoàn thiện hơn một chút.
timmfin

9
String.punctuation Python của định nghĩa dấu chấm câu như: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~Những công trình tốt hơn cho tôi, vì vậy thay thế khác sẽ là:replace(/['!"#$%&\\'()\*+,\-\.\/:;<=>?@\[\\\]\^_`{|}~']/g,"");
01AutoMonkey

1
@ AntoineLizée Tôi đồng ý rằng nó gây hiểu nhầm. Cập nhật câu trả lời. Cảm ơn.
Mike Grace

2
Tôi đã thử với "nó?" - không hoạt động đối với tôi ( regex101.com/r/F4j5Qc/1 ), giải pháp phù hợp là: /[.,\/#!$% \?] / G
Maxim Firsoff

128
str = str.replace(/[^\w\s]|_/g, "")
         .replace(/\s+/g, " ");

Xóa mọi thứ trừ các ký tự chữ và số và khoảng trắng, sau đó thu gọn nhiều ký tự liền kề thành các khoảng trắng.

Giải thích chi tiết:

  1. \w là bất kỳ chữ số, chữ cái hoặc dấu gạch dưới.
  2. \s là bất kỳ khoảng trắng.
  3. [^\w\s] là bất cứ thứ gì không phải là chữ số, chữ cái, khoảng trắng hoặc dấu gạch dưới.
  4. [^\w\s]|_ giống như số 3 ngoại trừ phần gạch dưới được thêm lại.

72
Điều này cũng sẽ loại bỏ các ký tự không phải tiếng Anh nhưng hoàn toàn là chữ và số như à, é, ö, cũng như toàn bộ bảng chữ cái Cyrillic.
Dan Abramov

5
@quemished Tôi không đồng ý, câu hỏi ban đầu không chỉ định "chỉ dành cho tiếng Anh". SO khá quốc tế, được sử dụng trên toàn thế giới. Bất cứ ai nói tiếng Anh và có quyền truy cập internet đều có thể sử dụng nó. Nếu ngôn ngữ không được chỉ định trong câu hỏi, thì chúng ta không nên đưa ra bất kỳ giả định nào. Chúng tôi đang ở trong năm 2017, chết tiệt!
Rolf

1
Ngoài ra, ngay cả khi bạn chỉ hỗ trợ tiếng Anh, bạn có các từ mượn như résumé và tên của các địa điểm hoặc người, vì vậy bạn sẽ không muốn phá vỡ khả năng của ai đó để nói rằng họ làm việc ở San José (chính tả chính thức) trong tủ giữa Ramón Chloé.
Chris Adams

Điều này sẽ gây rối với các từ như wouldn'tdon't
Charlie

71

Dưới đây là các ký tự dấu chấm câu tiêu chuẩn cho US-ASCII: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Đối với dấu chấm câu Unicode (chẳng hạn như dấu ngoặc kép, dấu gạch ngang, v.v.), bạn có thể dễ dàng khớp với các phạm vi khối cụ thể. Khối chấm câu chung\u2000-\u206Fvà khối chấm câu bổ sung\u2E00-\u2E7F.

Đặt cùng nhau và thoát đúng cách, bạn nhận được RegExp sau:

/[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/

Điều đó sẽ phù hợp với khá nhiều dấu chấm câu bạn gặp phải. Vì vậy, để trả lời câu hỏi ban đầu:

var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
var spaceRE = /\s+/g;
var str = "This, -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
str.replace(punctRE, '').replace(spaceRE, ' ');

>> "This is an example of a string with punctuation"

Nguồn US-ASCII: http://docs.oracle.com/javase/7/docs/api/java/util/regex/Potype.html#posix

Nguồn Unicode: http://kourge.net/projects/regapi-unicode-block


3
Đối với dấu chấm câu Unicode, các khối là không đủ. Bạn phải nhìn vào danh mục chung Dấu chấm câu, và bạn sẽ thấy rằng không phải tất cả các dấu chấm câu đều nằm trong các khối đó. Có rất nhiều dấu chấm câu quen thuộc bên trong các khối Latin chẳng hạn.
nhahtdh

15

/ [^ A-Za-z0-9 \ s] / g phải khớp với tất cả các dấu câu nhưng giữ nguyên khoảng trắng. Vì vậy, bạn có thể sử dụng .replace(/\s{2,}/g, " ")để thay thế không gian thêm nếu bạn cần phải làm như vậy. Bạn có thể kiểm tra regex trong http://rubular.com/

.replace(/[^A-Za-z0-9\s]/g,"").replace(/\s{2,}/g, " ")

Cập nhật : Sẽ chỉ hoạt động nếu đầu vào là ANSI English.


6
Bạn đang giả sử rằng chuỗi đó là ANSI English. Không phải tiếng Pháp với các chữ cái có dấu (àéô), cũng không phải tiếng Đức, tiếng Thổ Nhĩ Kỳ. Unicode tiếng Ả Rập, tiếng Trung Quốc, vv cũng sẽ biến mất.
Rolf

2
Cảm ơn, đã không nghĩ về điều đó hoàn toàn.
adnan2nd

10

Tôi đã chạy qua cùng một vấn đề, giải pháp này đã thực hiện thủ thuật và rất dễ đọc:

var sentence = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var newSen = sentence.match(/[^_\W]+/g).join(' ');
console.log(newSen);

Kết quả:

"This is an example of a string with punctuation"

Bí quyết là tạo ra một bộ phủ định . Điều này có nghĩa là nó phù hợp với bất kỳ thứ gì không có trong tập hợp tức là [^abc]- không phải a, b hoặc c

\Wlà bất kỳ từ nào, vì vậy [^\W]+sẽ phủ nhận bất cứ điều gì không phải là một từ char .

Bằng cách thêm vào _ (gạch dưới), bạn cũng có thể phủ nhận điều đó.

Làm cho nó áp dụng trên toàn cầu /g, sau đó bạn có thể chạy bất kỳ chuỗi nào thông qua nó và xóa dấu chấm câu:

/[^_\W]+/g

Đẹp và sạch sẽ ;)


1
Bạn cũng thay đổi tất cả các dòng mới vào không gian với phương pháp này.
nhahtdh

5
Phương pháp này chỉ hoạt động bằng tiếng Anh, tất cả các ký tự có dấu được loại bỏ.
NicolasBernier

@NicolasBernier yeah đúng 100% - Công cụ regex của JavaScript thực sự khá khập khiễng (xem: stackoverflow.com/questions / 4043307 / -) thêm mã. Tuy nhiên, để một regex nhanh chóng và súc tích để loại bỏ dấu chấm câu, nó hoạt động :)
jacobedawson

Đây là đơn giản nhất và phục vụ mục đích của tôi tốt.
James Shrum

9

Tôi sẽ chỉ đặt nó ở đây cho người khác.

Khớp tất cả các ký tự dấu chấm câu cho tất cả các ngôn ngữ:

Được xây dựng từ danh mục dấu chấm Unicode và thêm một số ký hiệu bàn phím phổ biến như $và dấu ngoặc và\-=_

http://www.fileformat.info/info/unicode/carget/Po/list.htmlm

thay thế cơ bản:

".test'da, te\"xt".replace(/[\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g,"")
"testda text"

đã thêm \ s dưới dạng khoảng trắng

".da'fla, te\"te".split(/[\s\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g)

đã thêm ^ để đảo ngược patternt để không khớp với dấu chấm câu nhưng các từ chúng chọn

".test';the, te\"xt".match(/[^\s\-=_!"#%&'*{},.\/:;?\(\)\[\]@\\$\^*+<>~`\u00a1\u00a7\u00b6\u00b7\u00bf\u037e\u0387\u055a-\u055f\u0589\u05c0\u05c3\u05c6\u05f3\u05f4\u0609\u060a\u060c\u060d\u061b\u061e\u061f\u066a-\u066d\u06d4\u0700-\u070d\u07f7-\u07f9\u0830-\u083e\u085e\u0964\u0965\u0970\u0af0\u0df4\u0e4f\u0e5a\u0e5b\u0f04-\u0f12\u0f14\u0f85\u0fd0-\u0fd4\u0fd9\u0fda\u104a-\u104f\u10fb\u1360-\u1368\u166d\u166e\u16eb-\u16ed\u1735\u1736\u17d4-\u17d6\u17d8-\u17da\u1800-\u1805\u1807-\u180a\u1944\u1945\u1a1e\u1a1f\u1aa0-\u1aa6\u1aa8-\u1aad\u1b5a-\u1b60\u1bfc-\u1bff\u1c3b-\u1c3f\u1c7e\u1c7f\u1cc0-\u1cc7\u1cd3\u2016\u2017\u2020-\u2027\u2030-\u2038\u203b-\u203e\u2041-\u2043\u2047-\u2051\u2053\u2055-\u205e\u2cf9-\u2cfc\u2cfe\u2cff\u2d70\u2e00\u2e01\u2e06-\u2e08\u2e0b\u2e0e-\u2e16\u2e18\u2e19\u2e1b\u2e1e\u2e1f\u2e2a-\u2e2e\u2e30-\u2e39\u3001-\u3003\u303d\u30fb\ua4fe\ua4ff\ua60d-\ua60f\ua673\ua67e\ua6f2-\ua6f7\ua874-\ua877\ua8ce\ua8cf\ua8f8-\ua8fa\ua92e\ua92f\ua95f\ua9c1-\ua9cd\ua9de\ua9df\uaa5c-\uaa5f\uaade\uaadf\uaaf0\uaaf1\uabeb\ufe10-\ufe16\ufe19\ufe30\ufe45\ufe46\ufe49-\ufe4c\ufe50-\ufe52\ufe54-\ufe57\ufe5f-\ufe61\ufe68\ufe6a\ufe6b\uff01-\uff03\uff05-\uff07\uff0a\uff0c\uff0e\uff0f\uff1a\uff1b\uff1f\uff20\uff3c\uff61\uff64\uff65]+/g)

đối với ngôn ngữ như tiếng Do Thái có thể loại bỏ "'trích dẫn đơn và trích dẫn kép và suy nghĩ nhiều hơn về nó.

sử dụng tập lệnh này:

Bước 1: chọn trong Firefox giữ điều khiển một cột gồm các số U + 1234 và sao chép nó, không sao chép U + 12456 mà chúng thay thế tiếng Anh

Bước 2 (tôi đã làm trong chrome) tìm một số textarea và dán nó vào nó sau đó nhấp chuột phải và nhấp vào kiểm tra. sau đó bạn có thể truy cập phần tử được chọn với $ 0.

var x=$0.value
var z=x.replace(/U\+/g,"").split(/[\r\n]+/).map(function(a){return parseInt(a,16)})
var ret=[];z.forEach(function(a,k){if(z[k-1]===a-1 && z[k+1]===a+1) { if(ret[ret.length-1]!="-")ret.push("-");} else {  var c=a.toString(16); var prefix=c.length<3?"\\u0000":c.length<5?"\\u0000":"\\u000000"; var uu=prefix.substring(0,prefix.length-c.length)+c; ret.push(c.length<3?String.fromCharCode(a):uu)}});ret.join("")

Bước 3 sao chép qua các chữ cái đầu tiên ascii dưới dạng các ký tự riêng biệt không nằm trong phạm vi vì ai đó có thể thêm hoặc xóa các ký tự riêng lẻ


7

Trong một ngôn ngữ Unicode biết, Unicode Punctuation sở hữu nhân vật là \p{P}- mà bạn thường có thể viết tắt \pPvà đôi khi mở rộng ra \p{Punctuation}cho dễ đọc.

Bạn có đang sử dụng thư viện Biểu thức chính quy tương thích Perl không?


8
Thật không may, JS không tương thích với Perl. Vấn đề khác là khi tôi kiểm tra điều này, nó đã không nắm bắt được tất cả các dấu câu trong chuỗi kiểm tra của @ Quentin => mikegrace.s3.amazonaws.com/forums/stack-overflow/iêu
Mike Grace

4
Bạn có thể sử dụng thư viện XRegExp để có được cú pháp mở rộng này.
Eirik Birkeland

7

Nếu bạn muốn xóa dấu chấm câu khỏi bất kỳ chuỗi nào, bạn nên sử dụng Plớp Unicode.

Nhưng, vì các lớp không được chấp nhận trong JavaScript RegEx, bạn có thể thử RegEx này phù hợp với tất cả các dấu câu. Nó phù hợp với các loại sau: Pc Pd Pe Pf Pi Po Ps Sc Sk Sm So GeneralPuncinating Bổ sung Dấu chấm câu CJKSymbolsAndPuncinating CuneiformNumbersAndPuncinating.

Tôi đã tạo nó bằng công cụ trực tuyến này tạo ra Biểu thức chính quy dành riêng cho JavaScript. Đó là mã để đạt được mục tiêu của bạn:

var punctuationRegEx = /[!-/:-@[-`{-~¡-©«-¬®-±´¶-¸»¿×÷˂-˅˒-˟˥-˫˭˯-˿͵;΄-΅·϶҂՚-՟։-֊־׀׃׆׳-״؆-؏؛؞-؟٪-٭۔۩۽-۾܀-܍߶-߹।-॥॰৲-৳৺૱୰௳-௺౿ೱ-ೲ൹෴฿๏๚-๛༁-༗༚-༟༴༶༸༺-༽྅྾-࿅࿇-࿌࿎-࿔၊-၏႞-႟჻፠-፨᎐-᎙᙭-᙮᚛-᚜᛫-᛭᜵-᜶។-៖៘-៛᠀-᠊᥀᥄-᥅᧞-᧿᨞-᨟᭚-᭪᭴-᭼᰻-᰿᱾-᱿᾽᾿-῁῍-῏῝-῟῭-`´-῾\u2000-\u206e⁺-⁾₊-₎₠-₵℀-℁℃-℆℈-℉℔№-℘℞-℣℥℧℩℮℺-℻⅀-⅄⅊-⅍⅏←-⏧␀-␦⑀-⑊⒜-ⓩ─-⚝⚠-⚼⛀-⛃✁-✄✆-✉✌-✧✩-❋❍❏-❒❖❘-❞❡-❵➔➘-➯➱-➾⟀-⟊⟌⟐-⭌⭐-⭔⳥-⳪⳹-⳼⳾-⳿⸀-\u2e7e⺀-⺙⺛-⻳⼀-⿕⿰-⿻\u3000-〿゛-゜゠・㆐-㆑㆖-㆟㇀-㇣㈀-㈞㈪-㉃㉐㉠-㉿㊊-㊰㋀-㋾㌀-㏿䷀-䷿꒐-꓆꘍-꘏꙳꙾꜀-꜖꜠-꜡꞉-꞊꠨-꠫꡴-꡷꣎-꣏꤮-꤯꥟꩜-꩟﬩﴾-﴿﷼-﷽︐-︙︰-﹒﹔-﹦﹨-﹫!-/:-@[-`{-・¢-₩│-○-�]|\ud800[\udd00-\udd02\udd37-\udd3f\udd79-\udd89\udd90-\udd9b\uddd0-\uddfc\udf9f\udfd0]|\ud802[\udd1f\udd3f\ude50-\ude58]|\ud809[\udc00-\udc7e]|\ud834[\udc00-\udcf5\udd00-\udd26\udd29-\udd64\udd6a-\udd6c\udd83-\udd84\udd8c-\udda9\uddae-\udddd\ude00-\ude41\ude45\udf00-\udf56]|\ud835[\udec1\udedb\udefb\udf15\udf35\udf4f\udf6f\udf89\udfa9\udfc3]|\ud83c[\udc00-\udc2b\udc30-\udc93]/g;
var string = "This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation";
var newString = string.replace(punctuationRegEx, '').replace(/(\s){2,}/g, '$1');
console.log(newString)


5

Đối với chuỗi en-US (tiếng Anh Mỹ), điều này là đủ:

"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation".replace( /[^a-zA-Z ]/g, '').replace( /\s\s+/g, ' ' )

Xin lưu ý rằng nếu bạn hỗ trợ UTF-8 và các ký tự như tiếng Trung / tiếng Nga và tất cả, điều này cũng sẽ thay thế chúng, vì vậy bạn thực sự phải chỉ định những gì bạn muốn.


3

nếu bạn đang sử dụng lodash

_.words('This, is : my - test,line:').join(' ')

Ví dụ này

_.words('"This., -/ is #! an $ % ^ & * example ;: {} of a = -_ string with `~)() punctuation"').join(' ')

2

Theo danh sách các dấu câu của Wikipedia, tôi đã phải xây dựng biểu thức chính sau để phát hiện các dấu chấm câu:

[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]


2
Nếu sử dụng regex này, bạn cũng nên thoát khỏi dấu phân cách regex của mình. Ví dụ: nếu bạn sử dụng /(phổ biến nhất) thì nó sẽ được thoát bên trong lớp ký tự ở trên bằng cách thêm dấu gạch chéo ngược trước, như thế này : \/. Đây là cách bạn sẽ sử dụng nó : "String!! With, Punctuation.".replace(/[\.’'\[\](){}⟨⟩:,،、‒–—―…!.‹›«»‐\-?‘’“”'";\/⁄·\&*@\•^†‡°”¡¿※#№÷׺ª%‰+−=‱¶′″‴§~_|‖¦©℗®℠™¤₳฿₵¢₡₢$₫₯֏₠€ƒ₣₲₴₭₺₾ℳ₥₦₧₱₰£៛₽₹₨₪৳₸₮₩¥]+/g,""). Nhân tiện, tôi không thấy backtick (`) ở bất cứ đâu trong đó, làm thế nào?
Rolf

Thiếu là mất tích. Có vẻ là khó để tìm thấy một danh sách tất cả các dấu chấm câu.
Alex

1

Nếu bạn muốn chỉ giữ lại bảng chữ cái và dấu cách, bạn có thể làm:

str.replace(/[^a-zA-Z ]+/g, '').replace('/ {2,}/',' ')

8
Sẽ không kéo ra nhiều hơn chỉ chấm câu? Unicode và như thế nào?
Alex

3
Bạn có nghĩa là "chỉ bảng chữ cái và không gian tiếng Anh "
Rolf

0

Nó phụ thuộc vào những gì bạn đang cố gắng trở lại. Tôi đã sử dụng gần đây:

return text.match(/[a-z]/i);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.