![](/img/trans.png)
[英]RegEx for Javascript (replace function) to allow only letters and spaces, but not start with space?
[英]regex with replace() for letters only
我有一個字符串 output
20153 Risk
我想要實現的是只獲取字母,我通過使用正則表達式只獲取數字來實現
const cf_regex_number = cf_input.replace(/\D/g, '');
這將只返回20153
。 但是,一旦我嘗試只獲取字母,它就會返回 while 字符串而不是Risk
。 我已經完成了我的研究,並且只獲取字母的正則表達式正在使用**/^[a-zA-Z]*$/**
這是我試圖只得到字母的代碼行
const cf_regex_character = cf_input.replace(/^[a-zA-Z]*$/,'')
但不是返回Risk
,而是返回20153 Risk ,這是整行字符串。
您的第一個模式是定位每個非數字並將其替換為空。
另一方面,您的第二個模式只是定位模式的第一次出現,並且該模式正在尋找字符串的開頭,然后是字母,然后是字符串的結尾。 沒有這樣的序列 - 如果您從字符串的開頭開始,則正好有零個字母,然后您離字符串的預期結尾很遠。 即使這樣有效,您也在刪除字母,而不是非字母。
此模式與您的第一個模式平行(刪除任何出現的非字母):
const cf_regex_character = cf_input.replace(/[^a-zA-Z]/g,'')
但 go 可能更好的方法是提取所需的 substring,而不是刪除它不是的所有內容:
const letters = cf_input.match(/[a-z]+/i)[0];
const numbers = cf_input.match(/\d+/)[0];
(如果您知道有這樣的 substring;如果您不確定,最好編寫一些防御性的代碼。)
/[^az]+/i
[
方括號]
表示一系列字符; 具體來說,在這種情況下a
到z
。
實際上i
標志i
不區分大小寫,因此也包括A
到Z
插入符號^
反轉模式; 這意味着,任何不在指定范圍內的東西。
+
表示只要字符在該范圍內,就繼續向匹配中添加字符。
然后停止匹配。
實際上,這將所有內容匹配到空間
在20153 Risk
。
然后你用空字符串''
替換這個匹配,你剩下的是Risk
。
const string = '20153 Risk'; const result = string.replace(/[^az]+/i, ''); console.log(result);
cf_input="20153 Risk" const cf_regex_character = cf_input.replace(/\d+\s/,'') console.log(cf_regex_character)
str="20153 Risk" reg=/[az]+/gi res=str.match(reg) console.log(res[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.