我想允许用户只输入高棉字符(Unicode字符),否则会发出警告。
Khmer Name: <input type="text" class="namekh" name="namekh">
为此,我的示例脚本如下:
<script>
var namekh = $('.namekh').val();
// function to check unicode or not
if (isUnicodeFunc(namekh) == true) {
alert('unicode character');
} else {
alert('please enter unicode only');
}
</script>
如何定义函数isUnicodeFunc
以检测值是否为Unicode? p>
答案 0 :(得分:1)
According to Wikipedia,高棉字母是unicode范围0x1780到0x17FF和0x19E0到0x19FF,所以你可以简单地测试字符串中的所有字符都在这个范围内:https://jsfiddle.net/8o87jgys/1/
function isUnicodeFunc(string) {
let isKhmer = true;
for (let i = 0; i < string.length; i++) {
let code = string.charCodeAt(i);
if (code < 0x1780 || (code > 0x17FF && code < 0x19E0) || code > 0x19FF) {
isKhmer = false;
break;
}
}
return isKhmer;
}
答案 1 :(得分:0)
您可以使用正则表达式测试输入。
var myRegex = new RegExp('[ក-\u17fe᧠-᧾]', 'gi');;
function isKhmerChar(textInput){
return myRegex.test(textInput);
}
有些工具可以从中获取正常表达式,例如Unicode range RegExp generator,这个工具适用于javascript unicode字符。
答案 2 :(得分:0)
您可以使用RegEx获得简单的解决方案。请参阅第一个函数,该函数将测试给定字符串是否仅包含高棉字符。 Here is an explanation, what is matched with the following RegEx rule.
function checkKhmerCharacters( val ) {
// Khmer range found at https://en.wikipedia.org/wiki/Khmer_alphabet
return /^[\u1780-\u17FF\u19E0-\u19FF]$/.test( val );
}
// Validate as you type
$( 'input' ).on( 'input', function ( e ) {
const elm = $( this );
const isValid = checkKhmerCharacters( e.target.value );
elm.toggleClass( 'input-error', !isValid );
} );
$( 'button' ).on( 'click', () => {
var namekh = $('.namekh').val();
console.log( checkKhmerCharacters( namekh ) );
if( checkKhmerCharacters( namekh ) ) {
alert( 'unicode character' );
}
else {
alert( 'please enter unicode only' );
}
} );
.input-error {
border: red 3px solid;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Khmer Name: <input type="text" class="namekh" name="namekh"> <button>Check</button>
答案 3 :(得分:0)
根据unicode table,你必须检查一个字符串是否有一个charackter,其中charcode位于0x1780
到0x17FF
或0x19e0
到0x19FF
之间。<登记/>
您可以split字符串来接收数组。您可以使用some循环此数组。如果条件返回false,some()
将打破循环 - 因此您不必遍历整个数组
function containsOnlyKahmerCharakter(str) {
return str.split('').some(function(char) {
var charCode = char.charCodeAt('0')
return (
charCode >= 0x1780 && charCode <= 0x17FF
|| charCode >= 0x19e0 && charCode <= 0x19FF
)
})
}
function containsOnlyKahmerCharakter(str) {
return str.split('').some(function(char) {
var charCode = char.charCodeAt('0')
return (
charCode >= 0x1780 && charCode <= 0x17FF
|| charCode >= 0x19e0 && charCode <= 0x19FF
)
})
}
console.log(containsOnlyKahmerCharakter('ក ខ គ ឃ ង ច'))
&#13;