⑴ js 正則 允許半形英數字、- (減號)、_ (下劃線) 允許全形文字 英數字、記號(空格除外)
varexp=/^(?:w|-| | |[u0100-uFFFF])*$/i;//姑且認為ascii以外字元全是全形,對漢字來說全覆蓋,全形空格?是神馬字元?用"【空格】".charCodeAt(0)獲取unicode碼後從范圍中刪除即可
console.log(exp.test("_azAZ 010-189554 好啊《書名號》?全形問號 換行"));//true
console.log(exp.test("+"));//false
console.log(exp.test(""));//false
⑵ javascript驗證多少位全形半形字元
A 什麼是全形和半形?
(1)全形--指一個字元佔用兩個標准字元位置。
漢字字元和規定了全形的英文字元及國標GB2312-80中的圖形符號和特殊字元都是全形字元。一般的系統命令是不用全形字元的,只是在作文字處理時才會使用全形字元。
(2)半形--指一字元佔用一個標準的字元位置。
通常的英文字母、數字鍵、符號鍵都是半形的,半形的顯示內碼都是一個位元組。在系統內部,以上三種字元是作為基本代碼處理的,所以用戶輸入命令和參數時一般都使用半形。
B 全形與半形各在什麼情況下使用?
全形占兩個位元組,半形佔一個位元組。
半形全形主要是針對標點符號來說的,全形標點占兩個位元組,半形佔一個位元組,而不管是半形還是全形,漢字都還是要佔兩個位元組。
在編程序的源代碼中只能使用半形標點(不包括字元串內部的數據)
在不支持漢字等語言的計算機上只能使用半形標點(其實這種情況根本就不存在半形全形的概念)
對於大多數字體來說,全形看起來比半形大,當然這不是本質區別了。
C 全形和半形的區別
全形就是字母和數字等與漢字占等寬位置的字。半形就是ASCII方式的字元,在沒有漢字輸入法起做用的時候輸入的字母數字和字元都是半形的。
在漢字輸入法出現的時候,輸入的字母數字默認為半形,但是標點則是默認為全形,可以通過滑鼠點擊輸入法工具條上的相應按鈕來改變。
D 關於「全形」和「半形」:
全形:是指中GB2312-80(《信息交換用漢字編碼字元集·基本集》)中的各種符號。
半形:是指英文件ASCII碼中的各種符號。
⑶ 如何用JavaScript動態替換全形字元
怎麼老是想著如何去獲取鍵盤碼之類的呢!
哎,你轉變下思維嘛!
既然你是即時錄入,即時判斷的話,那非常簡單哪!
我假設你的錄入文本框是<input id=txt type=text >
//當文本框的內容改變時,自動調用該函數,這時可以即時對文本內容進行
//判斷掃描,是否在輸入框內有全形字元出現,如果有,則返回真,如果沒有返回假,這樣就可以判斷是否有全形輸入啦!
以下正則是把范圍規定在:a-z A-Z 0-9_
<script>
function toDBC( sValue )
{
var rValue ="";
for(var i=0;i<sValue.length; i++ )
{
chCode = sValue.charCodeAt(i);
if( chCode >= 65248 && chCode <= 65375 )
{
rValue += String.fromCharCode( chCode - 65248 );
}
else if( chCode == 12288 )
{
rValue += String.fromCharCode( 32 );
}
else
{
rValue += String.fromCharCode( chCode );
}
}
return rValue;
}
document.getElementById("txt").onkeyup=function()
{
var sValue =this.value;
sValue=sValue.replace(/[\u4e00-\u9fa5]+/g ,"");
if( /[^\w]/.test( sValue ) )
{
sValue = toDBC( sValue );
}
this.value=sValue;
}
</script>