簡體   English   中英

JS正則表達式混亂

[英]JS regular expression confusion

首先,道歉。 我需要創建一個測試來檢查輸入字段的值。

我目前使用/[^A-Za-z0-9 ]/.test(document.form.Serial.value)來測試Serial的值是否僅為字母數字。

現在,如果設置了其他字段,則Serial必須為'i'或'I',則其余字符必須全部為數字。 我曾考慮過使用子字符串來執行此操作,但是這似乎有點長且不必要。

人們可以提供的任何建議將不勝感激!

如果要測試字符串是否以i或I開頭,然后僅包含數字,則可以使用如下正則表達式:

/^[iI][0-9]+$/

或者,對於不區分大小寫的匹配:

/^i[0-9]+$/i


基本上,這將匹配:

  • 字符串開頭: ^
  • 一個i
  • 0到9之間的任何字符: [0-9]
    • 一個或多個時間: [0-9]+
  • 字符串結尾: $

您可以嘗試下面的代碼

var test_value = false
if (document.form.Additional_Field.value) {
   test_value = /^(i|I)[0-9]+/.test(document.form.Serial.value) }
else {
    test_value = /[A-Za-z0-9]+/.test(document.form.Serial.value) }

它會導致test_value設置為 ,如果串行是字母數字或如果Additional_Field具有真值和串行其中i開始或I通過任何數量的數字休耕,和test_value否則設置為false。

為什么不分解問題。 您有兩個有效的輸入,因此用於語法檢查輸入的模式為:

/^([iI][0-9]+)|([A-Za-z0-9]+)$/

然后,您將面臨一個單獨且更簡單的問題,即根據表單上其他控件的狀態來確定經過驗證的輸入是否適當。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM