第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

僅在字段中限制一個(gè)句點(diǎn)/小數(shù)(客戶(hù)端驗(yàn)證)正則表達(dá)式

僅在字段中限制一個(gè)句點(diǎn)/小數(shù)(客戶(hù)端驗(yàn)證)正則表達(dá)式

肥皂起泡泡 2023-04-20 16:28:36
我在 JavaScript 中有一個(gè)客戶(hù)端驗(yàn)證函數(shù),用于允許用戶(hù)輸入美元金額的字段值。驗(yàn)證工作完美(只允許輸入數(shù)字和句點(diǎn)/小數(shù))到字段中。所有其他字符都被簡(jiǎn)單地刪除。我喜歡更新函數(shù),它只允許輸入一位小數(shù)/句點(diǎn),超過(guò)一位將被刪除這是我到目前為止所擁有的:onkeyup="if (!RegExp(/^\d*\.?\d*$/).test(this.value)) { this.value = this.value.replace(RegExp(/[A-Za-z-!$%^&*()_+|~=`{}\[\]:;'<>?,\/]+/).exec(this.value), '').replace(String.fromCharCode(34), '');}"任何幫助/建議都會(huì)很棒!
查看完整描述

1 回答

?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

  1. 不要將所有內(nèi)容都塞入 HTML 事件屬性中。寫(xiě)一個(gè)函數(shù)!String.fromCharCode(34)這也消除了僅使用雙引號(hào)字符的必要性。

    順便說(shuō)一句,如果您確實(shí)需要在 HTML 屬性中使用雙引號(hào)字符,只需使用&quot;.

  2. RegExp(/^\d*\.?\d*$/)是重復(fù)的。只需使用/^\d*\.?\d*$/, 因?yàn)樗呀?jīng)是一個(gè)正則表達(dá)式。RegExp如果您想將字符串轉(zhuǎn)換為正則表達(dá)式,則使用:RegExp("^\\d*\\.?\\d*$").

  3. 調(diào)用.exec()并使用它作為參數(shù)是.replace()沒(méi)有意義的。.exec()返回一個(gè)數(shù)組(包含匹配項(xiàng)),但.replace()需要一個(gè)正則表達(dá)式(或字符串)作為它的第一個(gè)參數(shù)。您還需要將g(lobal) 標(biāo)志添加到表達(dá)式中,否則只會(huì)替換第一個(gè)匹配項(xiàng)

    this.value?=?this.value.replace(/[A-Za-z-!$%^&*()_+|~=`{}\[\]:;'<>?,\/"]+/g,?'');

    請(qǐng)注意,我在正則表達(dá)式中添加了雙引號(hào)字符。但是,僅替換不是數(shù)字或句點(diǎn)的所有內(nèi)容可能會(huì)更容易:

    this.value?=?this.value.replace(/[^\d.]/g,?'');

不能僅使用正則表達(dá)式來(lái)刪除額外的句點(diǎn)(至少不是在所有當(dāng)前的瀏覽器中)。一種方法是在句點(diǎn)處處理.split字符串,然后將其與第一項(xiàng)和第二項(xiàng)之間的句點(diǎn)連接起來(lái):

function removeAllButFirstPeriod(string) {

? const split = string.split(".");

? if (split.length === 1) {

? ? // If the split string contains only one element, then there were no periods in the string

? ? return split[0];

? } else {

? ? return split[0] + "." + split.slice(1).join("");?

? }

}

最終結(jié)果(.test不需要??偸莿h除所有無(wú)效字符):

function?removeInvalidNumberChars(element)?{
??element.value?=?removeAllButFirstPeriod(element.value.replace(/[^\d.]/g,?''));
}

與(input事件是比 更好的選擇keydown

<input?oninput="removeInvalidNumberChars(this)">


查看完整回答
反對(duì) 回復(fù) 2023-04-20
  • 1 回答
  • 0 關(guān)注
  • 168 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)